我在openshift上安装了一个MongoDB盒式磁带,我遇到了从java代码连接到它的麻烦。 IP地址,端口和凭据来自openshift的RockMongo盒式磁带。以下方法调用:
public Document insert(String audio, String username) {
Document document = new Document();
document.put("username", username);
document.put("audio", audio);
document.put("timestamp", new Date());
collection.insertOne(document);
return document;
}
和这个mongo客户端配置:
private static MongoClient build() throws UnknownHostException {
if (mongoClient == null) {
mongoClient = new MongoClient(
new MongoClientURI( "mongodb://admin:password@X.X.X.X:27017/dbName"));
}
return mongoClient;
}
public static MongoCollection<Document> getCollection(String collectionName) {
try {
build();
} catch (UnknownHostException e) {
}
MongoDatabase db = mongoClient.getDatabase(dbName);
MongoCollection<Document> collection = db.getCollection(collectionName);
return collection;
}
导致INFO:PrimaryServerSelector从群集描述ClusterDescription中选择没有服务器,并且异常:在等待与PrimaryServerSelector匹配的服务器30000毫秒后超时。
编辑:我无法通过mongo终端应用程序在openshift上连接mongoDB服务:“exception:connect failed”,所以我认为这是openshift配置问题。端口转发和服务本身已启动答案 0 :(得分:0)
我想你没有正确配置集群(日志中的消息告诉了这个问题),我不确定OpenShift Cratridge是如何工作的,但我建议你检查它是否正确启动了mondo-db。通过ssh客户端检查并运行mongo-db命令检查其状态并启动。看一下这个问题:Java MongoClient cannot connect to primary,我想它会让你知道如何检查你有问题的地方。