参考Tomcat JBDC连接池,在给出的独立Java示例中,我们可以使用datasource.getConnection()
获取连接,这很酷。但在finally块中,它说con.close()
。
问题:当我实现时,似乎显而易见从数据源获取的con
将在每次finally中关闭。当这个连接被关闭时,连接池机制会获取一个新连接并将其添加到池中吗?
我认为应该有一个像releaseConnection()
之类的方法调用,让池自行决定是关闭它还是让它保持开放以供其他用途。
我也尝试过这样做: ConnectionPool aPool = datasource.createPool();
但我发现aPool
中没有像释放连接这样的东西。
我想我漏掉了什么? 感谢您的帮助。
来自Tomcat JBDC连接池的代码片段:
DataSource datasource = new DataSource();
datasource.setPoolProperties(p);
Connection con = null;
try {
con = datasource.getConnection();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from user");
int cnt = 1;
while (rs.next()) {
System.out.println((cnt++)+". Host:" +rs.getString("Host")+
" User:"+rs.getString("User")+" Password:"+rs.getString("Password"));
}
rs.close();
st.close();
} finally {
if (con!=null) try {con.close();}catch (Exception ignore) {}
}