今天使用mongo-java-drive写连接mongo的客户端,着实被上面那个错坑了一把。回顾一下解决过程:

报错

 com.mongodb.MongoTimeoutException: Timed out after  ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=localhost:, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketWriteException: Exception sending message}, caused by {javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake}, caused by {java.io.EOFException: SSL peer shut down incorrectly}}]
at com.mongodb.connection.BaseCluster.getDescription(BaseCluster.java:)
at com.mongodb.client.internal.MongoClientDelegate.getConnectedClusterDescription(MongoClientDelegate.java:)
at com.mongodb.client.internal.MongoClientDelegate.createClientSession(MongoClientDelegate.java:)
at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getClientSession(MongoClientDelegate.java:)
at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:)
at com.mongodb.client.internal.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:)
at com.mongodb.client.internal.MongoCollectionImpl.executeInsertOne(MongoCollectionImpl.java:)
at com.mongodb.client.internal.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:)
at com.mongodb.client.internal.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:)
at com.czb.chargepile.core.MongeTemplate.insert(MongeTemplate.java:)
at com.czb.chargepile.manage.X01Manager.insert(X01Manager.java:)
at manage.X01ManagerTest.main(X01ManagerTest.java:)

分析:mongodb数据库连接超时,也就是客户端连不上mongo

代码

 MongoCredential credential = MongoCredential.createCredential(user, databaseName, password);

 mongoClient = MongoClients.create(

 MongoClientSettings.builder()

 .applyToSslSettings(builder -> builder.enabled(true))

 .applyToClusterSettings(builder ->

 builder.hosts(Arrays.asList(new ServerAddress("localhost", 27017))))

 .credential(credential)

 .build());

 MongoDatabase database = mongoClient.getDatabase(databaseName);

解决

1、看到错误,首先想到的是用户名密码不对,为了确保密码无误,重新设置了mongo的密码,然而并未好使

2、检查用户所属数据库是否正确,经过检查,发现完全匹配

3、通过:https://docs.mongodb.com/ecosystem/drivers/driver-compatibility-reference/#reference-compatibility-mongodb-java

检查mongo-java-drive版本是否和mongo版本匹配,发现完全匹配

4、最后开始怀疑上面的代码有问题,找官方文档https://mongodb.github.io/mongo-java-driver/3.8/driver/tutorials/authentication/,从这里找到了新的写法,先无脑拷贝,然后运行,发现这里写法是成功的,与自己的代码对比,发现我的代码多了一行

 .applyToSslSettings(builder -> builder.enabled(true))

回到我代码,去掉,发现成功了。又回去看官方文档,找到端倪

如果使用那个选项,传输过程会使用TLS/SSL对传输层进行加密,但是我的mongo服务是没有对应设置的,所以导致连接不上。

最新文章

  1. 据库都有哪些锁 然后 Kill session
  2. Spark Graphx In Action
  3. sql like模糊查询
  4. Visual Studio 2012中的为创建类时的添加注释模板
  5. [状压dp]HDOJ1565 方格取数(1)
  6. [POJ 1155] TELE
  7. Spring 和 MyBatis 环境整合
  8. CSS 根据数据显示样式
  9. selenium之多线程启动grid分布式测试框架封装(二)
  10. 调用MobileAPI的设计(iOS篇)
  11. 三、ASP.NET MVC Controller 控制器(二:IController控制器的创建过程)
  12. 纳税服务系统【用户模块之使用POI导入excel、导出excel】
  13. Android Looper原理分析
  14. C语言程序设计第二次作业1
  15. map-reduce 优化
  16. Java虚拟机二 虚拟机的基本结构
  17. django 获取 POST 请求值的几种方法(转)
  18. html5 canvas js(时钟)
  19. jenkins获取测试报告展示的方法
  20. LeetCode 删除链表倒数第N个节点

热门文章

  1. POJ-2236 Wireless Network 顺便讨论时间超限问题
  2. CodeM 资格赛 B 可乐 思维
  3. Mysql 用户root密码重置
  4. [大数据学习研究]2.利用VirtualBox模拟Linux集群
  5. ResourceDictionary主题资源替换(二) :通过加载顺序来覆盖之前的主题资源
  6. Mybatis使用入门,这一篇就够了
  7. 关于Oracle12c中无scott用户的问题
  8. 第四周课程总结&试验报告(二)
  9. Nginx正确配置Location
  10. 1、Spark 2.1 源码编译支持CDH