1. 程式人生 > >MongoDB Java 連線池的注意事項

MongoDB Java 連線池的注意事項

1.Mongo物件

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

2.DB物件

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

3.手動還連線入池

DB物件也允許在一個連線上執行多個操作,比如下面的程式碼:



DB db...;
db.requestStart();

code....

db.requestDone();

requestStart 會讓自動還連線入池失效,因此必須確保requestDone一定能夠被呼叫。這裡應該用finally塊會更嚴密一些。

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

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:
[email protected]
">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); } private Mongo mongo; public void init(final String ip, int port, int poolSize) throws java.net.UnknownHostException { System.setProperty("MONGO.POOLSIZE", String.valueOf(poolSize)); if (mongo == null) { mongo = new Mongo(ip, port); MongoOptions options = mongo.getMongoOptions(); options.autoConnectRetry = true; options.connectionsPerHost = poolSize; } } }


相關推薦

MongoDB Java 連線注意事項

1.Mongo物件Mongo物件內部實現了一個連線池。Mongo物件是執行緒安全的,因此可以只建立一個,在多執行緒環境下安全使用。因此,我們可以用將Mongo變數作為一個Singleton類的成員變數,從而保證只建立一個連線池。Mongo.close方法將關閉當前所有活躍的連

thrift的TTransport連線注意事項[Java版本說明]

thrift長連線,基於維護TTransport連線池實現。 一般步驟: 1.對要通訊的伺服器ip和port,建立足夠的TTransport例項並維護起來。 2.在通訊的時候,從中選擇空閒的TTransport連線使用。 3.通訊結束後歸還TTransport例項,以供下次

MongoDB遠端連線注意事項

MongoDB的安全模式預設是關閉的,也就是不需要賬號密碼就能訪問資料庫。在 預設情況下啟動MongoDB是沒有開啟認證功能的,如果需要使用賬號密碼驗證連線功能,就需要開啟使用者認證的開關。 這裡使用robomongo工具舉例: 1、建立一個連線 2、在開啟認證模式之前先建立一

java操作mongodb連線

Mongo的例項其實就是一個數據庫連線池,這個連線池裡預設有10個連結。我們沒有必要重新實現這個連結池,但是我們可以更改這個連線池的配置。因為Mongo的例項就是一個連線池,所以,專案中最好只存在一個Mongo的例項。 常見的配置引數: connectionsPerHost

通過java客戶端連線hbase 注意事項

1、通過java客戶端連線hbase,其中hbase通過zookeeper去管理,需要注意的是客戶端埠。      通過在瀏覽器端輸入地址檢視:http://192.168.3.206:60010/m

Java 連線(使用DBCP與C3P0)

DBCP   需要下載common-dbcp.jar和common-pool.jar。   下載網址(下載xxx-bin.zip即可):     http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi     http://com

unity連線資料庫注意事項

雖然在Unity3D中能夠通過PlayerPrefs類來儲存和讀取資料,但是一旦資料量增大,僅僅通過程式碼的方式存取資料,這樣的工作量是非常大的。那麼如何通過使用Sql Server資料庫來存取資料呢?其實過程也非常簡單,過程如下: 1、找到System.Data.dll檔案,預設的地址是在C:/

Java連線的基本工作原理

1、基本概念及原理   我們知道,對於共享資源,有一個很著名的設計模式:資源池(Resource Pool)。該模式正是為了解決資源的頻繁分配?釋放所造成的問題。為解決上述問題,可以採用資料庫連線池技術。資料庫連線池的基本思想就是為資料庫連線建立一個“緩衝池”。預先在緩衝池中放入一定數量的連線,

MongoDB 索引的建立注意事項、以及建索引導致鎖庫的解決方案

                          MongoDB索引的建立注意事項        在資料量超大的情形下,

java連線

連線池相關概念:   對於共享資源,有一個很著名的設計模式:資源池(Resource Pool)。該模式正是為了解決資源的頻繁分配﹑釋放所造成的問題。為解決我們的問題,可以採用資料庫連線池技術。資料庫連線池的基本思想就是為資料庫連線建立一個“緩衝池”。預先在緩衝池中放入一定數量的連

Java賦值注意事項

        賦值使用的操作符是"="。它的意思就是“取右邊的值(即右值),把它複製給左邊(即左值)”。右值可以是任何常數、變數或者表示式(只要它能生成一個值就行)。但左邊必須是一個明確的、已命名的變數。必須有個物理空間可以儲存等號右邊的值。 即可以

SpringBoot中使用MongoDB連線配置

在SpringBoot中,我們可以通過引入 spring-boot-starter-data-mongodb 依賴來實現spring-data-mongodb 的自動配置。但是,預設情況下,該依賴並沒有像使用MySQL或者Redis那樣為我們提供連線池配置的功能。因此,我們需要自行重寫 Mong

java連線技術

連線池運作原理:   在實際應用開發中,特別是在WEB應用系統中,如果JSP、Servlet或EJB使用JDBC直接訪問資料庫中的資料,每一次資料訪問請求都必須經歷建立資料庫連線、開啟資料庫、存取資料和關閉資料庫連線等步驟,而連線並開啟資料庫是一件既消耗資源又費時的工作,如果頻繁發生這種資料庫操

Java Arrays.asList注意事項

Arrays.asList用來將陣列轉化為List,這個看似功能很明瞭的方法卻暗藏玄機。 請先看下面的程式: int[] datas = new int[]{1,2,3,4,5}; List list = Arrays.asList(datas); System

IDEA中新建Java Web工程注意事項

IDEA中注意事項 在WEB-INF下新建lib和classes不是必須的。如果自己新建了,每次必須手動將jar依賴在src和web下的lib都新放一份。 getServletConfig().getServletContext().getRealPath()如果在idea中使用,需

mongodb 關閉連線注意細節

最近一個API部署到正式環境後,總是過幾天后,就報錯誤: java.lang.IllegalStateException: this Mongo has been closed\n\tat com.mongodb.DBTCPConnector._check

java內部類注意事項

java內部類 public class code1 { public code2 B; class code2//方法三static class code2 { private String s; public code2(String s){this.

mongodb的安裝及注意事項

環境:win8 32bit 1:安裝 去mongodb的官網http://www.mongodb.org/downloads下載32bit的包 解壓後會出現以下檔案 在安裝的盤C:下建立mongodb資料夾,拷貝bin資料夾到該目錄下,這樣就相當於安裝了mongod

oracle物化檢視連線查詢注意事項

發現對於REFRESHFAST ON COMMIT物化檢視,並不支援標準外連線的寫法,而Oracle特有的(+)方式則沒有問題。 Oracle對於標準外聯接的寫法支援的並不好,類似的bug已經不是第一次碰到了。 SQL> CREATE TABLE T_P (ID NU

Java連線詳解

http://www.javaweb1024.com/java/JavaWebzhongji/2015/06/01/736.html 對於共享資源,有一個很著名的設計模式:資源池(Resource Pool)。該模式正是為了解決資源的頻繁分配﹑釋放所造成的問題。