最近在ibm websphere portal的專案中,碰到大量的portlet需要連線資料庫,而連線資料庫的開銷造成效能問題,因此考慮在portal中使用連線池。方案1)使用portal的連線池,可惜ibm的連線池使用起來很是不爽,問題多多,放棄。方案2)自己寫連線池,其實質是connection物件池。在portal 專案中開發連線池,要解決的問題,是資料庫驅動程式的位置。本方案借助於連線建立和連線池分開的方法實現。
本應用包含三個類,如下:
connectionpool 連線池管理類
addconnectionprocess 連線維護執行緒類
dbsource 建立資料庫連線介面類
public class connectionpool
public static connectionpool getinstance(dbsource dbsource, int maxconn, int normalconn,int minconn)throws exception }}
return instance;
}public static connectionpool getinstance()
/*** 將不再使用的連線返回給連線池
** @param conn 客戶程式釋放的連線
* @param repeat連線重複使用標誌
*/public synchronized void freeconnection(connection conn, boolean repeat)
/*** 考慮到執行緒的執行效率,在這裡不考慮連線的有效性
* 注意:連線的有效性需要各自執行緒負責
*/public synchronized connection getconnection()
}} else catch (exception e)
}return con;
}//釋放鏈結
public synchronized void release() catch (sqlexception e)
}pool.removeallelements();
}public int getnormalconn()
public string getname()
public int getminconn()
public vector getpool()
public boolean getaddthreadflag()
public void setaddthreadflag(boolean addthreadflag)
public dbsource getdbsource()
}//建立連線線程類
public class addconnectionprocess implements runnable
//更新到最大連線數
public void run()
}}catch(exception e)catch(exception e2)
}vector pool=connectionpool.getpool();
pool.addall(conns);
connectionpool.setaddthreadflag(false);}}
//資料庫連線介面
public inte***ce dbsource
資料庫連線池 Redis連線池
基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...
資料庫連線池
實現資料連線池,讓系統有更高有執行效率 using system using system.data using system.data.sqlclient using system.collections using system.threading public class dataaccess...
資料庫連線池
資料庫連線池概述 資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。資料庫連線池負責分配 管理和釋放資料庫連線,它允許應用程式重複使用乙個現有...