本文將從原始碼出發詳解tomcat jdbc連線池的初始化過程,看下連線池初始化到底做了些什麼
//建立連線池
public connectionpool(poolconfiguration prop) throws sqlexception
protected void init(poolconfiguration properties) throws sqlexception else
//初始化poolcleaner,該類是乙個timertask,在定期任務內會執行checkabandoned、checkidle、testallidle等任務,詳情可以參考
initializepoolcleaner(properties);
//create jmx mbean
if (this.getpoolproperties().isjmxenabled()) creatembean();
//parse and create an initial set of interceptors. letting them know the pool has started.
//these interceptors will not get any connection.
poolproperties.interceptordefinition proxies = getpoolproperties().getjdbcinterceptorsasarray();
for (int i=0; i如上述**所示tomcat jdbc連線池初始化做了以下工作:
1.檢查連線池配置屬性
2.初始化連線池任務(建立poolcleaner)
3、根據initialsize建立poolconnection陣列,然後放入到idle佇列中,這樣從連線池獲取資料庫連線的時候就可以先使用idle佇列中連線,如果idle連線沒有可用連線則會判斷當前連線池大小是否超過連線池配置的maxactive,如果沒有則建立新的資料庫連線,否則就會阻塞等待獲取到連線為止(當前不是無條件等待,會有乙個超時時間-根據連線池maxwait來定)!
tomcat jdbc 連線池 引數說明
mysql資料庫連線驅動 資料庫連線url url jdbc mysql localhost 3306 grtg useunicode true characterencoding utf8 資料庫連線驅動 driver com.mysql.jdbc.driver 資料庫連線使用者名稱 userna...
連線池詳解
對於共享資源,有乙個很著名的設計模式 資源池 resource pool 該模式正是為了解決資源的頻繁分配 釋放所造成的問題。資料庫連線池的基本思想就是為資料庫連線建立乙個 緩衝池 預先在緩衝池中放入一定數量的連線,當需要建立資料庫連線時,只需從 緩衝池 中取出乙個,使用完畢之後再放回去。我們可以通...
MySQL連線池詳解
使用場景 資料庫連線是一種關鍵的 有限的 昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。原理連線池基本的思想是在系統初始化的時候,將資料庫連線作為物件儲存在記憶體中,...