如何/何时/何时必须关闭MongoClient?

时间:2015-03-20 11:05:33

标签: java mongodb

我正在用java开发一个Web应用程序,我对关闭MongoClient感到疑惑。

看到这个 http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#getting-started-with-java-driver

  

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?

由于

1 个答案:

答案 0 :(得分:4)

The API doc说:

"关闭底层连接器,然后关闭所有打开的连接。一旦被调用,就不能再使用这个Mongo实例了。 "

所以,我认为,当你再也不想打开MongoDB连接时(在此运行时),你只能关闭它。换句话说,仅在使用此客户端实例的应用程序的生命周期结束时。