Openshift无法从java代码连接到mongoDB,超时

时间:2015-04-22 09:02:08

标签: java mongodb openshift openshift-cartridge

我在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配置问题。端口转发和服务本身已启动

1 个答案:

答案 0 :(得分:0)

我想你没有正确配置集群(日志中的消息告诉了这个问题),我不确定OpenShift Cratridge是如何工作的,但我建议你检查它是否正确启动了mondo-db。通过ssh客户端检查并运行mongo-db命令检查其状态并启动。看一下这个问题:Java MongoClient cannot connect to primary,我想它会让你知道如何检查你有问题的地方。