c3p0连接池使用完毕后连接返还
来源:互联网 发布:软件科技有限公司简介 编辑:程序博客网 时间:2024/04/29 14:39
c3p0连接池啊就不多说了。有一个问题吧就是连接使用完毕后要怎么放回连接池,供下次继续使用。
答案是:
conn.close();// 放回
可以将连接放回。但在实际应用中有时候发现调用这个方法以后连接还是在使用中,没有被返还。
于是各种百度、google。
发现获取连接有两种方法。
一种是
ComboPooledDataSource cpds = new ComboPooledDataSource();conn = cpds.getConnection();
另一种是
conn = cpds.getConnectionPoolDataSource().getPooledConnection().getConnection();
上面那一种方法从连接中,官方文档是这么说的:Attempts to establish a connection with the data source that this DataSource object represents.直接和数据源建立连接。下面这种从连接池中获取连接。
这么一解释应该显而易见了。上面那种方法的连接压根就不是从连接池里拿出去的,所以当调用conn.close()方法的时候自然也就没有放回连接池了。
附上连接池状态获取:
System.out.println("清闲的:" + cpds.getNumIdleConnections());System.out.println("忙碌的:" + cpds.getNumBusyConnections());System.out.println("所有的:" + cpds.getNumConnections());
阅读全文