为什么在Shadowsocks全局模式下,mongo Java驱动器无法工作

时间:2018-06-28 02:16:47

标签: mongodb mongo-java-driver

使用mongo-java-driver 3.6.1

查询mongo
    final String host = "192.168.0.12";
    final int port = 40000;
    final String collectionName = "foo";
    MongoClient mongoClient = new MongoClient(host, port);
    MongoCollection coll = mongoClient.getDatabase("test").getCollection(collectionName);
    Object first = coll.find().first();
    System.out.println(first);

如果我将Shadowsocks从自动代理模式更改为Global Mode,则上述代码不起作用

com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message
        at com.mongodb.connection.InternalStreamConnection.translateReadException(InternalStreamConnection.java:530)
        at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:421)
        at com.mongodb.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:290)
        at com.mongodb.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:255)
        at com.mongodb.connection.CommandHelper.sendAndReceive(CommandHelper.java:84)
        at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:34)
        at com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:91)
        at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:51)
        at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:127)
        at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:114)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:170)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at com.mongodb.connection.SocketStream.read(SocketStream.java:84)
        at com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:547)
        at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:418)
        ... 9 more

但是在全局模式下,我可以在终端中成功登录mongo shell

➜  ~ mongo 192.168.0.12:40000
> db.foo.findOne()
{ "_id" : ObjectId("5a9e01a52cba6d9bfc22c765"), "x" : 1 }

那为什么在全局模式下mongo-java-driver不起作用

0 个答案:

没有答案