MongoDB-Java |如何管理连接

MongoDB-Java |如何管理连接,java,mongodb,Java,Mongodb,我将MongoDB与Java一起使用,对于我的连接有一些问题。首先,我应该如何连接到Mongo?我应该使用静态客户端并保持其打开状态吗?因为连接起来需要500毫秒。所以,当用户需要数据时,总是连接它不是最好的主意,是吗 但接下来的问题是。当我进行一些查询时,我会收到错误消息java.lang.IllegalStateException:池已关闭或java.lang.IllegalStateException:状态应为:打开 那么,我应该如何管理我的整个MongoDB连接呢?总是等待500毫秒是一

我将MongoDB与Java一起使用,对于我的连接有一些问题。首先,我应该如何连接到Mongo?我应该使用静态客户端并保持其打开状态吗?因为连接起来需要500毫秒。所以,当用户需要数据时,总是连接它不是最好的主意,是吗

但接下来的问题是。当我进行一些查询时,我会收到错误消息
java.lang.IllegalStateException:池已关闭
java.lang.IllegalStateException:状态应为:打开

那么,我应该如何管理我的整个MongoDB连接呢?总是等待500毫秒是一种减慢速度的方法,在10次连接后重新启动服务器不是很好。还有其他好办法吗

谢谢你的帮助

我应该如何连接到Mongo

听起来,您已经在使用
MongoClient
,这是一个很好的方法

MongoClient
类被设计为线程安全的,并在线程之间共享。通常,您只为给定的数据库集群创建一个实例,并在应用程序中使用它

我应该使用静态客户端并保持其打开状态吗

MongoClient
实例实际上表示到数据库的连接池;即使有多个线程,您也只需要一个MongoClient类实例

这也应该解决你所遇到的错误


下面是一个关于使用MongoClient建立连接的示例。

您是否在singleton/static
MongoClient上调用
close
?通过多个线程共享单个
MongoClient
是安全的,
MongoClient
实际上是您的连接池。但是,如果有人关闭此池,则会发生此异常。