0

我有一个使用 KeyedObjectPool 类的 jdbc 连接池,我通过实现的方法openConnection()closeConnection(). closeConnection()通常只是将连接返回到池并仅在它以前经常使用时才将其关闭。因此它使用ConnectionPool.returnObject()which 不会关闭连接对象(请参见此处)。

class ConnectionPool
{

public openConnection(...)
{
   ...
}

public closeConnection()
{
   ...
}
}

但是,如果我像这样使用连接池:

    try (Connection connection = sConnectionPool.openConnection(JdbcCredentials);)
    {
        doSomething();
    }
    catch (Exception e) 
    {
       ...
    }

使用的连接对象是try-with仅返回到池中还是实际上关闭了connection.close()(我不希望发生这种情况,因为它会使我的池无用)?

4

2 回答 2

0

它实际上是实际连接的包装器。它将在幕后释放实际连接回池。进一步由池来决定实际连接是实际关闭还是重新用于新的 getConnection()。

于 2017-09-15T10:23:48.880 回答
-1

close()在池连接上将其返回到池中,无论这是由try您自己的代码还是由您自己的代码引起的。

否则它不会是可重用的,所以它不会是一个连接池。

于 2017-09-15T09:53:14.803 回答