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