首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java连接池和try-with语句:连接实际上是关闭还是返回池?

Java连接池和try-with语句:连接实际上是关闭还是返回池?
EN

Stack Overflow用户
提问于 2017-09-15 15:55:12
回答 2查看 562关注 0票数 0

我有一个使用KeyedObjectPool类的jdbc连接池,并通过实现的方法openConnection()closeConnection()使用它。closeConnection()通常只是将连接返回到池,并仅在以前经常使用的情况下才关闭它。因此,它使用不关闭连接对象(see here)的ConnectionPool.returnObject()

代码语言:javascript
复制
class ConnectionPool
{

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

public closeConnection()
{
   ...
}
}

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

代码语言:javascript
复制
    try (Connection connection = sConnectionPool.openConnection(JdbcCredentials);)
    {
        doSomething();
    }
    catch (Exception e) 
    {
       ...
    }

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

EN

回答 2

Stack Overflow用户

发布于 2017-09-15 18:23:49

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

票数 0
EN

Stack Overflow用户

发布于 2017-09-15 17:53:15

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

否则它就不能重用,所以它不是一个连接池。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46234523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档