当前位置: 首页 > 知识库问答 >
问题:

将Java-Application连接到MongoDB-com.mongodb.MongoSocketReadException:过早到达流的末尾

孔征
2023-03-14

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

我的下一步是将这个应用程序部署到服务器maschine上的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个答案

傅献
2023-03-14

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

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

或者试着去掉上面写着不超时的

 类似资料:
  • 我有一个简单的数据结构(下面引用的)要插入到MongoDB中: 我得到以下错误堆栈: 我的mongodb版本是。 更新2 该系统可用于其他写入(即使是大得多的记录)

  • 当我试图连接到MongoDB Atlas免费层时,我得到了一个过早到达流结束的错误。使用Java1.8和Mongo驱动程序3.8.0。这和Atlas中的集群设置有什么关系吗?我在MongoDB本地主机上使用了相同的程序。 错误:

  • 在一段时间的不活动之后,我在一个调用(默认Java驱动程序)中遇到了这个错误。我试图添加一个手动心跳(写入一个封顶的集合),但没有帮助。我只在连接到compose上的实例时才遇到问题(即,不在本地上下文中)。 MongoDB版本是3.2.8,最新的驱动程序(3.3),使用Java8。 知道吗?

  • 问题内容: 一段时间不活动后,在调用(默认Java驱动程序)时收到此错误。我尝试添加手动心跳(写到有上限的收藏集),但没有帮助。我只有在撰写时连接到实例时才收到问题(即不在本地上下文中)。 MongoDB版本为3.2.8,最新驱动程序(3.3),使用Java 8。 任何想法 ? 问题答案: 我同意Rhangaun的回答,这是我在JAVA代码中的解决方案: 这是我的研究链接:http: //3t.i

  • 我试图理解Retheart文档的这部分内容,但无法理解:https://softinstigate.atlassian.net/wiki/spaces/rh/pages/9207828/installation+and+setup#installationandsetup-5.1connectreshearttomongodbovertls/ssl 使用keytool创建导入mongod使用的公共