我正在构建一个osgi应用程序,我想访问两个不同的mongodb,一个用于授权,另一个用于存储数据。
在我当前的blueprint.xml中,我用 <cm:property-placeholder
. 为了使用mongo客户机,我只需添加 MongoConfig mongoConfig
在持久层,我用蓝图上的凭证连接到mongodb。
为了建立两个不同的连接,我应该向blueprint添加什么?
如何初始化两个不同的mongo客户端?
蓝图.xml
<cm:property-placeholder
persistent-id="com.example"
update-strategy="reload">
<cm:default-properties>
<cm:property name="mongodbUsername" value="XXXX"/>
<cm:property name="mongodbPassword" value="XXXX"/>
<cm:property name="mongodbDatabase" value="XXXX"/>
<cm:property name="mongodbIp" value="XXXXXX"/>
<cm:property name="mongodbPort" value="27017"/>
</cm:default-properties>
</cm:property-placeholder>
<bean id="mongoConfig"
class="com.example.MongoConfig"
init-method="init">
<property name="dbIp" value="${mongodbIp}"/>
<property name="dbName" value="${mongodbDatabase}"/>
<property name="dbPort" value="${mongodbPort}"/>
<property name="dbPassword" value="${mongodbPassword}"/>
<property name="dbUsername" value="${mongodbUsername}"/>
</bean>
mongoconfig.java文件
public class MongoConfig {
private String dbUsername;
private String dbPassword;
private String dbIp;
private int dbPort;
private String dbName;
private MongoClient mongoClient;
private static final String COLLECTION = "example";
private MongoCollection<Document> myCollection;
public void init() {
String serverDetails = String.format("%s:%s", dbIp, dbPort);
String userAuth = "";
String connUrl = "";
if (dbUsername != null && dbPassword != null) {
userAuth = String.format("%s:%s", dbUsername, dbPassword);
connUrl = String.format("mongodb://%s@%s", userAuth, serverDetails);
} else {
connUrl = String.format("mongodb://%s", serverDetails);
}
MongoClientURI uri = new MongoClientURI(connUrl);
this.mongoClient = new MongoClient(uri);
this.myCollection = mongoClient.getDatabase(dbName).getCollection(COLLECTION);
}
}
暂无答案!
目前还没有任何答案,快来回答吧!