public class DBConnectionPool implements TimerListener{
private int checkedOut;// 已被分配出去的连接数
private ArrayList freeConnections=new ArrayList();
// 容器,空闲池,根据 // 创建时间顺序存放已创建但尚未分配出去的连接
private int minConn;// 连接池里连接的最小数量
private int maxConn;// 连接池里允许存在的最大连接数
private String name;// 为这个连接池取个名字,方便管理
private String password;// 连接数据库时需要的密码
private String url;// 所要创建连接的数据库的地址
private String user;// 连接数据库时需要的用户名
public Timer timer;// 定时器
public DBConnectionPool(String name,String URL,String user,
String password,int maxConn)// 公开的构造函数
public synchronized void freeConnection(Connection con)
// 使用完毕之后,把连接返还给空闲池
public synchronized Connection getConnection(long timeout)
// 得到一个连接,timeout 是等待时间
public synchronized void release()
// 断开所有连接,释放占用的系统资源
private Connection newConnection()
// 新建一个数据库连接
public synchronized void TimerEvent()
// 定时器事件处理函数
}
public class DBConnectionManager {
static private DBConnectionManager instance;
// 连接池管理类的唯一实例
static private int clients;// 客户数量
private ArrayList drivers=new ArrayList();
// 容器,存放数据库驱动程序
private HashMap pools = new HashMap();
// 以 name/value 的形式存取连接池对象的名字及连接池对象
static synchronized public DBConnectionManager getInstance()
/** 如果唯一的实例 instance 已经创建,直接返回这个实例; 否则,调用私有构造函数,
创建连接池管理类的唯一实例 */
private DBConnectionManager()
// 私有构造函数, 在其中调用初始化函数 init()
public void freeConnection(String name,Connection con)
// 释放一个连接,name 是一个连接池对象的名字
public Connection getConnection(String name)
// 从名字为 name 的连接池对象中得到一个连接
public Connection getConnection(String name,long time)
// 从名字为 name 的连接池对象中取得一个连接,time 是等待时间
public synchronized void release()// 释放所有资源
private void createPools(Properties props)
// 根据属性文件提供的信息,创建一个或多个连接池
private void init()// 初始化连接池管理类的唯一实例,由私有构造函数调用
private void loadDrivers(Properties props)// 装载数据库驱动程序
}