通過上圖,我們可以定義出ConnectionPool要完成管理所需要的基本接口: public class ConnectionPool implements TimerListener{ public boolean initialize() //連接池初始化 public void destroy() //連接池的銷毀 public synchronized java.sql.Connection getConnection() //取一個連接 public synchronized void close() //關(guān)閉一個連接 PRivate synchronized void removeFromPool() //把一個連接從連接池中刪除 private synchronized void fillPool() //維護(hù)連接池大小 public synchronized void TimerEvent() //定時器事件處理函數(shù) } 通過這幾個接口,已經(jīng)可以完成連接池的基本管理。在TimeEvent()函數(shù)中完成連接池的狀態(tài)檢驗(yàn)工作,fillPool()時連接池至少保持最小連接數(shù)。因?yàn)槲覀円4婷恳粋€連接的狀態(tài),所以還需要一個數(shù)據(jù)庫連接對象: class ConnectionObject{ public java.sql.Connection con; public boolean inUse; //是否被使用標(biāo)志 public long lastaccess; //最近一次開始使用時間 public int useCount; //被使用次數(shù) } 加入了ConnectionObject對象后,在ConnectionPool中操作的應(yīng)該只是ConnectionObject,而其他進(jìn)程需要的只是ConnectionObject的con屬性,因此我們再加入一個類,作為其他進(jìn)程獲得與返回連接的接口: CLASS Conn{ GetConnection(); //從連接池中取出一個有效連接 CloseConnection(); //返回連接,此時并沒有關(guān)閉連接,只是放回了連接池 DestroyPool(); //銷毀連接池 } 最后我們的整個系統(tǒng)總的架構(gòu)如下: