将Java-应用程序连接到MongoDB - com.mongodb.MongoSocketReadException:过早地到达流的末尾

时间:2017-09-11 06:48:35

标签: java mongodb jboss

在我的应用程序中,我使用MongoDB,它在Wildfly 11.0.0.Alpha1本地工作正常 - 在本地应用程序服务器和本地MongoDB数据库上部署之后,应用程序可以在上下文路径和端口访问 - 一切都很好。

我的下一步是在服务器机器上将此应用程序部署到JBoss服务器。 我将MongoDB URI更改为mongoDB服务器:

mongodb://user:password@server:27017/databaseName?authMechanism=SCRAM-SHA-1&ssl=true

如果我部署此应用程序,我会在底部获得以下日志条目。 其实我不知道为什么以及它意味着什么。 有没有人暗示在这种情况下我能做些什么来解决它?

08:38:42,249 INFO  [org.mongodb.driver.cluster] (cluster-
ClusterId{value='59b62f7238b5cb310bd6f438', description='null'}-myServer:27017) Exception in monitor thread while connecting 
to 
server myServer:27017: com.mongodb.MongoSocketReadException: Prematurely 
reached end of stream
    at com.mongodb.connection.SocketStream.read(SocketStream.java:88) 
[mongodb-driver-core-3.4.1.jar:]
    atm com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:494) [mongodb-driver-core-3.4.1.jar:]
    at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:224) [mongodb-driver-core-3.4.1.jar:]
    at com.mongodb.connection.CommandHelper.receiveReply(CommandHelper.java:134) [mongodb-driver-core-3.4.1.jar:]
    at com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:121) [mongodb-driver-core-3.4.1.jar:]
    at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32) [mongodb-driver-core-3.4.1.jar:]
    at com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:85) [mongodb-driver-core-3.4.1.jar:]
    at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:45) [mongodb-driver-core-3.4.1.jar:]
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:116) [mongodb-driver-core-3.4.1.jar:]
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113) [mongodb-driver-core-3.4.1.jar:]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.8.0_112]

08:38:42,855 INFO  [org.mongodb.driver.cluster] (ServerService Thread Pool -- 290) No server chosen by WritableServerSelector from cluster description 
ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=
[ServerDescription{address=myServer:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]}. Waiting for 30000 ms before timing out

1 个答案:

答案 0 :(得分:0)

这可能与mongodb连接上发生的超时有关。 尝试在构建连接时使用API​​来增加超时

  MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
builder.maxConnectionIdleTime(<long_time>);

或者尝试删除那些没有超时的文件