簡體   English   中英

關閉MongoDB Java連接

[英]Closing MongoDB Java Connection

我正在嘗試設計一個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調用close連接。 連接類總是返回相同的MongoClient實例,它永遠不會關閉。我關閉的唯一內容是游標。

  • 是否有必要在每次查詢數據庫時關閉MongoClient? 我的上述設計有效嗎?

每次查詢數據庫時,絕對不應該關閉MongoClient MongoClient維護一個連接池,設置起來相對昂貴,因此您需要在Web應用程序的整個生命周期內重用MongoClient實例。

還有幾點需要指出:

  • connectToMongo方法中存在競爭條件。 您需要同步對該方法的訪問,以確保最多只創建一個MongoClient實例。
  • 如果在未首先重新啟動應用程序服務器的情況下重新部署Web應用程序,則必須確保在Web應用程序關閉時關閉MongoClient。 例如,您可以使用ServletContextListener執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM