gpt4 book ai didi

java - 关闭 MongoDB Java 连接

转载 作者:IT老高 更新时间:2023-10-28 13:31:31 27 4
gpt4 key购买 nike

我正在尝试设计一个 Mongo Db 连接类,我将 MongoClient 保持为静态。

private static MongoClient client = null;

public static DB connectToMongo() throws Exception {
if (null != client) {
return client.getDB(DBNAME);
}
client = new MongoClient(HOST,PORT);
return client.getDB(DBNAME);
}

我的整个web应用使用上述方法连接Mongo如下:

db = MongoDBConnection.connectToMongo();
collection = db.getCollection("collectionName");

执行数据库操作后,我从不调用 MongoClient 的关闭连接。连接类将始终返回从不关闭的同一个 MongoClient 实例。我唯一关闭的是游标。

  • 每次查询数据库都需要关闭MongoClient吗?我的上述设计有效吗?

最佳答案

绝对不要在每次查询数据库时都关闭 MongoClient。 MongoClient 维护一个连接池,它的设置成本相对较高,因此您需要在 Web 应用程序的整个生命周期内重复使用 MongoClient 实例。

还有几点需要指出:

  • connectToMongo 方法中存在竞争条件。您需要同步对该方法的访问,以确保最多创建一个 MongoClient 实例。
  • 如果您在未先重新启动应用服务器的情况下重新部署 Web 应用程序,则必须确保在关闭 Web 应用程序时关闭 MongoClient。例如,您可以使用 ServletContextListener 来做到这一点。

关于java - 关闭 MongoDB Java 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com