在BoneCP中关闭连接
问题描述:
我们有BoneCP库管理我们的连接池。我想知道下面的语句是否会将连接返回到池中。在BoneCP中关闭连接
statement = conn.createStatement();
....
lots of code.
....
Connection conn = statement.getConnection();
statement.close();
conn.close();
上述代码是否会关闭连接并将连接放回池中?
更新:
我问这个问题,因为当我的ConnectionPool运行统计数据,我仍然看到一个显示正在使用2个连接的conPool.getTotalLeased()。但是,我已经使用上述机制关闭了连接。
答
池的整体意义是保持已建立的连接到您的数据库。当您从池中检索连接时,可节省连接数据库的时间。
你所看到的是水池持有你的连接,所以它都很好。
当您关闭连接时,它只会返回到池并标记为可供您下次检索。
答
是的,它确实将连接移回池中。从池中获取连接时发生错误,修复了它,现在我在totalLeased()方法中看不到2个连接。
的错误,我发现
conPool.getConnection(); // loitering connection which we see in the getTotalLeased();
..
Statement st = conPool.getConnection().getStatement(); //we have handle to this connection.
return st;
你是说,即使我调用close()的连接,在getTotalLeased()仍然会显示为如果正在使用的连接? \ – Zeus 2014-09-10 18:08:56
它取决于池的实现,但基本上获得真正连接的包装,并且close方法正在发信号通知已释放连接的池。 – Hannes 2014-09-10 19:24:36