BoneCP的ResultSet.getStatement()是否打开了一个新连接?

时间:2016-02-17 19:06:44

标签: java jdbc bonecp

我正在使用bonecp v0.8.0(我认为是最新的),与Mysql Connector / J 5.1.6配对

假设我有以下代码

BoneCP pool = new BoneCP(...);
Connection origConn = pool.getConnection();
Statement origStmt = conn.createStatement();

...
ResultSet rs = origStmt.executeQuery(...);
...
Statement newStmt = rs.getStatement();
Connection newConn = newStmt.getConnection();
rs.close();
newStmt.close();
newConn.close();

在上面的代码中,似乎origConn == newConn,origStmt!= newStmt。我发现这很奇怪。

我还发现如果我关闭newStmt而不是origStmt,我的连接往往会增长而不会被释放回连接池。这最终会导致我的应用程序耗尽连接并冻结(当它请求新连接时)。

javadocs让我相信ResultSet.getStatement()会返回创建它的同一个Statement对象,但是这可能不是BoneCP的情况。

任何人都知道这里发生了什么?

0 个答案:

没有答案
相关问题