Yih*_* Li 4 java connection driver mongodb
使用org.springframework.data.mongodb.core.MongoTemplate
似乎MongoDB驱动程序无法从池中连接中删除掉落的套接字,直到您的代码尝试使用它
错误如下:
2013-9-2 9:13:16 com.mongodb.DBPortPool gotError
??: emptying DBPortPool to /IP:27017 b/c of error
java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at org.bson.io.PoolOutputBuffer.pipe(PoolOutputBuffer.java:129)
at com.mongodb.OutMessage.pipe(OutMessage.java:236)
at com.mongodb.DBPort.go(DBPort.java:133)
at com.mongodb.DBPort.call(DBPort.java:92)
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:244)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:216)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:288)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:273)
at com.mongodb.DBCursor._check(DBCursor.java:368)
at com.mongodb.DBCursor._hasNext(DBCursor.java:459)
at com.mongodb.DBCursor.hasNext(DBCursor.java:484)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1530)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1336)
Run Code Online (Sandbox Code Playgroud)
对数据库DB的服务器/ IP读取操作:27017失败; 嵌套异常是com.mongodb.MongoException $ Network:对服务器/ IP的读操作:27017在数据库DB上失败
有没有其他解决方案,除了尝试捕获?
MongoDB Java驱动程序只能在开始使用它时告诉连接已死 - 它不会定期检查连接(例如)以检查它们是否仍然存活,因为自动执行此操作可能会对性能产生影响.但是,如果在单个连接中收到IOException,则将关闭并删除所有其他连接,以便之后创建新连接.
它确实意味着应用程序有责任捕获异常并在适当时执行重试.真的,你的应用程序是决定在连接消失等特殊情况下做什么的最佳场所.
| 归档时间: |
|
| 查看次数: |
4117 次 |
| 最近记录: |