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

获取com.MongoDB.mongoSocketReadException:过早到达流结束-MongoDB

邰棋
2023-03-14
INFO: Cluster created with settings {hosts=[host-name:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='300000 ms', maxWaitQueueSize=500}
Jun 07, 2019 3:33:36 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster description not yet available. Waiting for 300000 ms before timing out
Jun 07, 2019 3:33:37 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Exception in monitor thread while connecting to server host-name:27017
    com.mongodb.MongoSocketReadException: Prematurely reached end of stream
    at com.mongodb.internal.connection.SocketStream.read(SocketStream.java:112)
    at com.mongodb.internal.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:570)
    at com.mongodb.internal.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:441)
    at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:295)
    at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:255)
    at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83)
    at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33)
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:105)
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:62)
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:127)
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117)
    at java.lang.Thread.run(Thread.java:748)
Timed out after 300000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{host-name:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]

 System.setProperty("javax.net.ssl.trustStore", "path\\cacerts");
 System.setProperty("javax.net.ssl.trustStorePassword", "xxxx");
 CountDownLatch latch = new CountDownLatch(1);
 MongoCredential credential = MongoCredential.createCredential("username", 
                            "dbname","xxxx".toCharArray());
 MongoClientSettings settings = MongoClientSettings.builder()
   .credential(credential)
   .applyToSslSettings(ssl -> { ssl.enabled(true); })
   .applyToClusterSettings(builder ->
    builder.serverSelectionTimeout(1, TimeUnit.MINUTES)
   .hosts(Arrays.asList(new ServerAddress("host-address", 27017))))
   .build();
 MongoClient mongoClient = MongoClients.create(settings);
 MongoDatabase database = mongoClient.getDatabase("sample");
 MongoCollection<Document> collection = database.getCollection("data");
 System.out.println(collection.countDocuments());

共有1个答案

钱言
2023-03-14

最后我解决了这个问题。与SSL有关

我跳过了这两件事

1)将客户端认证PEM文件导出为pkcs12格式

openssl pkcs12 -export -out mongodb.pkcs12 -in client.pem
 System.setProperty ("javax.net.ssl.keyStore", "path to java security folder\\mongodb.pkcs12");
 System.setProperty ("javax.net.ssl.keyStorePassword","changeit");
 类似资料:
  • 我有一个简单的数据结构(下面引用的)要插入到MongoDB中: 我得到以下错误堆栈: 我的mongodb版本是。 更新2 该系统可用于其他写入(即使是大得多的记录)

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

  • 我试图解密和验证一个加密的文件,但得到一个异常java。伊奥。EOFEException:执行完整性检查时,PartialInputStream中的流过早结束。数据被正确解密,签名被检查。 异常发生在pbe中。验证()。 有人知道为什么会发生这种情况,以及如何解决它吗? 我在1.51版上使用JDK15。 代码如下: 完整的堆栈跟踪:

  • 问题内容: 我无法安装node.js(0.8.9)。我通过安装向导进行操作,每次安装结束时,都会收到消息“ Node.js安装向导过早终止”。 会是什么呢?谢谢。 问题答案: 这可能会在将来对某人有所帮助。我从安装程序中收到了类似的消息,发现我可以转到命令提示符并使用命令行选项运行MSI,以使其创建日志文件(如),您可以在其中选择日志的名称和位置。 以我为例,我们在Active Directory

  • 我对“文件过早结束”感到非常奇怪。我们的一个服务器上最近几天的异常。同样的配置XML在另一台服务器上也能正常工作。我们在这两个服务器上都使用Tomcat5.0.28。这个代码已经工作了很长时间(7+年),只是在最近的服务器崩溃后,我们在其中一个服务器上面临这个问题。XML和Java解析代码没有变化。:( 我能看到的唯一区别是在Java版本中-

  • 我正试图基于封送的xml和xslt以及一些问题生成outFile。 这段代码从对象生成xml流。 此方法生成以xml作为输入的输出文件 运行代码时,我得到TransformerExcema: 输入xml和xslt都会在在线工具中产生预期的输出-http://www.utilities-online.info/xsltransformation. 这段代码在控制台中提供了正确的xml文件。 在这个问