Java中使用MongoDB串連池的注意事項__Java

來源:互聯網
上載者:User

1.Mongo對象 內部實現了一個串連池。Mongo對象是安全執行緒的,因此可以只建立一個,在多線程環境下安全使用。因此,我們可以用將Mongo變數作為一個Singleton類的成員變數,從而保證只建立一個串連池。Mongo.close方法將關閉當前所有活躍的串連。所以要在web工程被從Tomcat或者GlassFish容器中登出的時候確保調用close方法。

2.DB對象

DB對象可以通過Mongo.get方法獲得,代表了和資料庫的一個串連。預設情況下,當執行完資料庫的查詢或者更新操作後,串連將自動回到串連池中。不需要我們手動調用代碼放回池中。至於如何?,我猜測是update,query,save方法內部有finally塊,那裡面有還串連到池中的代碼。


3.手動還串連入池

DB對象也允許在一個串連上執行多個操作,比如下面的代碼:

[java]  view plain copy print ? DB db...;   db.requestStart();      code....      db.requestDone();  
requestStart 會讓自動還串連入池失效,因此必須確保requestDone一定能夠被調用。這裡應該用finally塊會更嚴密一些。

4.範例程式碼,下面的類實現了Lazy loading的Singleton模式,裡面的成員變數Mongo mongo因此只會執行個體化一次。注意串連池大小和重連設定。

[java]  view plain copy print ? package com.freebird.helper;      import com.mongodb.Mongo;   import com.mongodb.MongoOptions;   import com.mongodb.DB;      /**   * Describe class DBManager here.   * example:   * 初始化:DBManager.getInstance().init("74.208.78.5",27017,200);   * 之後,每次通過下面的代碼擷取資料庫物件   * DBManager.getInstance().getDB();   * Created: Sat Dec 17 10:45:24 2011   *   * @author <a href="mailto:chenshu@chunshu">chenshu</a>   * @version 1.0   */   public class DBManager {          public static final String DB_NAME = "kaimei";              public static final String MESSAGE_COLLECTION = "email";          public static DBManager getInstance(){       return InnerHolder.INSTANCE;       }          /**       * Creates a new <code>DBManager</code> instance.       *       */       private DBManager() {              }          private static class InnerHolder{       static final DBManager INSTANCE = new DBManager();       }          public DB getDB(){       return mongo.getDB(DB_NAME);       }  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.