java - 无法弄清楚为什么我不断收到 com.mongodb.MongoSocketReadException : Prematurely reached end of stream

原文 标签 java mongodb tomcat

试图弄清楚为什么我一直在下面显示异常。

这是我的代码:

CodecRegistry pojoCodecRegistry = fromRegistries(MongoClient.getDefaultCodecRegistry(), fromProviders(PojoCodecProvider.builder().automatic(true).build()));
MongoClientOptions.Builder options_builder = new MongoClientOptions.Builder();
options_builder.maxConnectionIdleTime(60000);
MongoClientURI uri = new MongoClientURI("mongodb+srv://USERNAME:MYPASSWORD@database-yyc55.mongodb.net/test\n", options_builder);
MongoClient mongoClient = new MongoClient(uri);
MongoDatabase database = mongoClient.getDatabase("test");
database = database.withCodecRegistry(pojoCodecRegistry);
MongoCollection<AppUser> collection = database.getCollection("users", AppUser.class);
AppUser appUser = null;
String userName = null;
appUser = collection.find().first();
userName = facebook.getName();

如您所见,我已经进行了一些研究并尝试将 maxIdleConnection 设置为 60000 毫秒,但我仍然收到此异常。
奇怪的是 - 这段代码之前有效,并且在一天不使用数据库之后,它开始发生。

异常(exception):

com.mongodb.MongoSocketReadException: Prematurely reached end of stream at com.mongodb.connection.SocketStream.read(SocketStream.java:87) at com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:547) at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:418) 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:748)



谢谢你的帮助。

最佳答案

显然,问题在于我的 IP 已更改,并且在服务器上,我不允许访问任何其他 IP。
它解决了它,但我无法解释为什么我得到:“com.mongodb.MongoSocketReadException:过早到达流结束”异常。
正如您在上面的问题中看到的那样,我还在我的代码中添加了选项生成器。

关于java - 无法弄清楚为什么我不断收到 com.mongodb.MongoSocketReadException : Prematurely reached end of stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49937210/

相关文章:

java - 套接字超时后 hibernate 无法恢复

java - 当一周从星期一开始时,如何获取给定日期的星期几?

java - 为什么主 Spring Boot 应用程序总是触发 PMD 的 HideUtilityClassConstructorCheck?

java - 在jlabel中显示选定的jcheckbox

node.js - Mongodb拆分结果基于属性的数组

mongodb - 解析仪表板不起作用

java - Tomcat-以不同的名称提供静态文件

node.js - 僧侣排序与限制选项

java - Spring 3.1, Aspect, Tomcat - 循环错误

java - Tomcat 类加载器不工作