的操作。这里主要包含使用的连接(nowconnections)和未使用的连接(freeconnections) 两个 Vector 类创 建的对象,创建Vector对象的方法如下: Р public DBConnectionpool(vector connections)Р { Р freeconnections = new Vectoro();Р nowconnections = new Vector(); Р }Р 当外部程序向数据库申请建立连接后系统会调用nowconnections.add()方法,此时已用连接计数器加1,相应的,调用freeconnections.Removei()方法,此时空闲连接计数器减1,对于这样的引用计数法将会在后面的章节中具体Р描述。这样,不同的数据库访问请求就可以共享这些连接,并通过复用这些已经建立的数据库连接,克服传统开发模式对数据库操作的缺点。另外,采用超时判断(timeout)机制,等待应用程序对连接的释放或者调用Connection.close()方法主动释放连接,能极大地节省系统资源和用户等待时间。而实现连接池时,当应用程序调用Connection.close()试图去关闭数据库连接时,这时需要有一个通告给连接池实现模块,通告对当前的数据库物理连接(DBConnectionPool Р对象)进行重用。为了使连接池实现模块能得到这种“通告”,连接池实现模块必须实现ConnectionEventListener 接口,而且同时需要注册成为DBConnectionPool 对象的监听者。连接池实现模块接受到此通告后,不是真正意义上的物理奖闭、而是将DBConnectionPool对象返回到池中进行重用。从上面的介绍,可以看出连接池技术的关键就是其自身的管理机制,结合连接池工作Р的基本原理,通过下图展现出一个连接池系统的总体设计框架。