最近在看Datasource时候想到,datasource是数据库厂商提供的,但connection是jdk提供的,那在Connection。close()时,是不是就不把这个connection放到缓冲池了 ?
问题解决:
大家可以查看jdk中javax.sql.PooledConnection这个接口的说明,其中有段是这样的:
(1)。当应用程序调用 DataSource.getConnection
方法时,它取回 Connection
对象。如果连接池已完成,则该 Connection
对象实际上是到 PooledConnection
对象的句柄,这是一个物理连接。
(2)。应用程序关闭连接时,它调用 Connection
方法 close
。完成连接池时,连接池管理器将得到通知;因为它曾使用 ConnectionPool
方法 addConnectionEventListener
作为 ConnectionEventListener
对象注册它自身。连接池管理器释放到 PooledConnection
对象的句柄,并将 PooledConnection
对象返回到连接池,以便再次使用。因此,当应用程序关闭其连接时,基础物理连接会被回收而不是被关闭。
看到这些大家应该能明白了吧,下面给出其他相关文章的链接:
www.huihoo.org/j2ee/jdbc3.html
blog.chinaunix.net/u/20532/showart_217573.html