【问题标题】:Are UCP connections closed when calling closeConnections() using the UCP manager when the pool lifecyle is LIFE_CYCLE_FAILED?当池生命周期为 LIFE_CYCLE_FAILED 时,使用 UCP 管理器调用 closeConnections() 时 UCP 连接是否关闭?
【发布时间】:2019-08-25 03:46:34
【问题描述】:

我正在处理使用 Oracle ojdbc 12 和 Java 8 的 Oracle UCP 管理器的问题。如果 UCP 池启动失败,我希望关闭它创建的连接。

当池初始化过程中遇到 ORA-02391:超出同时 SESSIONS_PER_USER 限制错误时,例如当 initPoolSize 值太大时,startConnectionPool API 会抛出异常并且池状态为 FAILED。这是预期的行为。

但是,调用 stopConnectionPool() 会使池状态变为 STOPPED,而不会实际关闭任何连接。我使用 netstat 和服务器 v$sessions 看到本地连接。

我的直觉是,正如文档中提到的 (https://docs.oracle.com/cd/E18283_01/java.112/e12265/manage.htm) 停止池应该只在它处于 STARTING 或 STARTED/RUNNING 状态时起作用。但在那种情况下 stopConnectionPool() 应该会抛出一个错误,这不是我所看到的。

所以问题是:stopConnectionPool() UCP API 是否应该在 FAILED 池上工作?

也许唯一的出路就是摧毁池子?

【问题讨论】:

    标签: java oracle jdbc ucp


    【解决方案1】:

    'stopConnectionPool()' 仅在池对象已处于“停止”生命周期的情况下不执行任何操作。在所有其他情况下,此管理器的调用应停止池关闭所有打开的连接。如果您在所述情况下仍然看到打开的连接,请准备重现报告行为的小型应用程序并联系 Oracle。

    【讨论】:

      猜你喜欢
      • 2015-06-15
      • 2016-04-06
      • 2017-02-04
      • 2016-12-10
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      相关资源
      最近更新 更多