WritableServerSelector从群集中选择的服务器没有

时间:2016-03-16 15:14:17

标签: java mongodb

作为MongoDB的新手,我试图在我刚刚安装的mongoDB(v3.2.4)中插入一个简单的文档。使用MongoDB驱动程序3.2.2。 这里是我最小化的代码:

public <classname>()
{
    public static final String COLLECTION_NAME = "logs";
    MongoClient mongoClient = new MongoClient("<server-adress>");
    MongoDatabase db = mongoClient.getDatabase("test");

    Document  data = new Document ();
    data.append(<whatever>);
    //...inserting more into document...
    db.getCollection(COLLECTION_NAME).insertOne(data); //collection should be created new

    mongoClient.close();
}

程序正在执行,但我在执行期间遇到以下错误(和信息):

Mär 16, 2016 3:50:06 PM com.mongodb.diagnostics.logging.JULLogger log
INFORMATION: Cluster created with settings {hosts=[<server-adress>:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
Mär 16, 2016 3:50:06 PM com.mongodb.diagnostics.logging.JULLogger log
INFORMATION: No server chosen by WritableServerSelector from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, all=[ServerDescription{address=<server-adress>:27017, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out
Mär 16, 2016 3:50:07 PM com.mongodb.diagnostics.logging.JULLogger log
INFORMATION: Exception in monitor thread while connecting to server <server-adress>:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:114)
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:128)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection refused: connect
    (...) 
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:50)
    at com.mongodb.connection.SocketStream.open(SocketStream.java:58)
    ... 3 more

Error: Timed out after 30000 ms while waiting for a server that matches WritableServerSelector. Client view of cluster state is {type=UNKNOWN, servers=[{address=<server-adress>:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused: connect}}]

也未插入文件。

当我使用insertOne() - 命令对该行进行注释时,它会消失。所以我认为它不是&#39;连接有问题,是吗?

我有一些想法:

  • 是否与异步有关?我不知所措,我无处可说,我不想同步执行它。
  • 是否缺少任何权限(由于这个WritableServerSelector - Thing)?
  • 是否与&#34; test&#34; -database有关?
  • MongoDB的独立模式有问题吗? (我不想使用复制品。)

但是对于所有这些想法,我无法找到真实的证据......

(请改进问题标题,我没有更好的主意......)

1 个答案:

答案 0 :(得分:5)

自己解决了。

我也应该提到,我正在尝试从另一台机器连接到MongoDB实例。 MongoDB-presets不允许这样做。

所以我必须在/etc/mongod.conf文件中将bindIp后面的值从127.0.0.1更改为0.0.0.0。

[Source]