我正在用java开发一个Web应用程序,我对关闭MongoClient感到疑惑。
MongoClient实例实际上代表了一个连接池 数据库;你只需要MongoClient类的一个实例 即使有多个线程。有关更多信息,请参阅并发文档页面 信息。 MongoClient类设计为线程安全的 在线程之间共享。通常,您只为给定创建一个实例 数据库集群并在整个应用程序中使用它。如果对某些人 因为您决定创建许多MongoClient实例,请注意:all 每个MongoClient都应用资源使用限制(最大连接数等) 处理实例的实例,请确保调用 MongoClient.close()来清理资源
这个 http://docs.mongodb.org/ecosystem/drivers/java-concurrency/#java-driver-concurrency
Java MongoDB驱动程序是线程安全的。如果您在网络中使用 例如,您应该创建一个单独的服务环境 MongoClient实例,您可以在每个请求中使用它。该 MongoClient对象维护一个内部连接池 数据库(默认最大池大小为100)。对于每一个请求 DB(查找,插入等)Java线程将从中获取连接 池,执行操作,并释放连接。这个 表示每次使用的连接(套接字)可能不同。
似乎我必须拥有MongoClient的唯一实例。我的疑问是:我必须在何时/何地/何时致电MongoClient?
由于
答案 0 :(得分:4)
"关闭底层连接器,然后关闭所有打开的连接。一旦被调用,就不能再使用这个Mongo实例了。 "
所以,我认为,当你再也不想打开MongoDB连接时(在此运行时),你只能关闭它。换句话说,仅在使用此客户端实例的应用程序的生命周期结束时。