使用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)对服务器/IP:27017的读取操作在数据库DB上失败;嵌套的例外是com.mongodb.MongoException$Network:对服务器的读取操作/IP:27017在数据库数据库上失败
除了尝试捕捉之外,还有其他解决方案吗?
发布于 2013-09-03 16:29:54
MongoDB驱动程序只能在您开始使用连接时才能判断它是否已死--它不会定期检查连接(例如)来检查它们是否仍然有效,因为自动这样做可能会对性能产生影响。但是,如果您在单个连接中获得一个IOException,则所有其他连接都将被关闭和删除,因此随后将创建新的连接。
这确实意味着应用程序有责任捕获异常并在适当情况下执行重试。实际上,在连接消失等特殊情况下,您的应用程序是决定该做什么的最佳地方。
https://stackoverflow.com/questions/18564607
复制相似问题