我有一个使用KeyedObjectPool类的jdbc连接池,我通过实现的方法openConnection()
和closeConnection()
使用它。 closeConnection()
通常只返回与池的连接,并且只有在之前经常使用它时才关闭它。因此,它使用ConnectionPool.returnObject()
,它不会关闭连接对象(see here)。
class ConnectionPool
{
public openConnection(...)
{
...
}
public closeConnection()
{
...
}
}
但是,如果我使用这样的连接池:
try (Connection connection = sConnectionPool.openConnection(JdbcCredentials);)
{
doSomething();
}
catch (Exception e)
{
...
}
使用try-with
的连接对象是仅返回到池中还是实际以connection.close()
关闭(我不想发生这种情况,因为这会使我的游泳池变得无用)?
答案 0 :(得分:0)
它实际上是实际连接的包装器。 它将在封面下将实际连接释放回池中。它进一步到池,以决定实际连接是否将实际关闭或重新用于新的getConnection()。
答案 1 :(得分:-1)
close()
还是您自己的代码引起的,池上连接上的 try
都会将其返回到池中。
否则它将不可重用,因此它不会是连接池。