【问题标题】:Connection is still not closing in connection pool after using session.close()使用 session.close() 后连接仍然没有在连接池中关闭
【发布时间】:2023-03-24 20:45:01
【问题描述】:

我正在使用休眠应用程序,我的 Web 服务器是 Wildfly 17。我在整个应用程序中使用 session.close() 方法,但连接池中的活动连接大小不断增加。并且在发生最大池大小连接关闭问题之后。 click to see image

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    池的一般概念是保留创建/初始化成本高的对象。 由于建立数据库连接需要一些时间,因此您的连接池会保留它们,因此其他任务会更快地启动。

    当您调用session.close() 时,Hibernate 返回到数据源的连接。数据源本身保持连接(不关闭它)。

    根据连接池的实现(和设置),连接可能会在一段时间后关闭,也可能不会关闭。池通常会运行简单的请求(例如 select 1 ...)以在连接位于池中时保持连接处于活动状态。

    【讨论】:

    • 我在整个应用程序中都使用 session.close(),但在从 UI 端执行任何操作后,我的活动连接没有减少。我的问题是,如果我使用 session.close() 那么为什么活动连接数没有减少。
    • 因为 session.close() 将连接返回到池中,池并没有关闭返回的连接。
    猜你喜欢
    • 1970-01-01
    • 2018-12-28
    • 2012-02-20
    • 2011-04-24
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多