通过上图,我们可以定义出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() //定时器事件处理函数 } 通过这几个接口,已经可以完成连接池的基本管理。在TimeEvent()函数中完成连接池的状态检验工作,fillPool()时连接池至少保持最小连接数。因为我们要保存每一个连接的状态,所以还需要一个数据库连接对象: class ConnectionObject{ public java.sql.Connection con; public boolean inUse; //是否被使用标志 public long lastAccess; //最近一次开始使用时间 public int useCount; //被使用次数 } 加入了ConnectionObject对象后,在ConnectionPool中操作的应该只是ConnectionObject,而其他进程需要的只是ConnectionObject的con属性,因此我们再加入一个类,作为其他进程获得与返回连接的接口: CLASS Conn{ GetConnection(); //从连接池中取出一个有效连接 CloseConnection(); //返回连接,此时并没有关闭连接,只是放回了连接池 DestroyPool(); //销毁连接池 } 最后我们的整个系统总的架构如下: