簡潔高效的資料庫連線池

2021-04-14 15:54:58 字數 1654 閱讀 6028

最近在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...

資料庫連線池

資料庫連線池概述 資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。資料庫連線池負責分配 管理和釋放資料庫連線,它允許應用程式重複使用乙個現有...