gpt4 book ai didi

oracle - 是否可以使 JBoss JDBC 连接失效,以便不再从连接池重新提供连接?

转载 作者:行者123 更新时间:2023-12-02 06:22:07 25 4
gpt4 key购买 nike

我遇到过这样的情况:JDBC 连接将其所附加的 Oracle session 置于特定状态(即 DBMS_FLASHBACK 启用模式)。此模式的退出可能会失败(至少理论上如此),这意味着 session 错误地处于该状态。在这种情况下,连接可以返回到池中,并由另一个线程获取,而 Oracle session 仍处于 DBMS_FLASHBACK 启用模式。

我已经证明这确实会发生。 (JBoss 4.2.1)

理想的情况是在模式退出失败时捕获 SQLException,并将连接标记为“坏”,这样一旦它返回到池中,JBoss 就会销毁该连接并创建一个新连接。

但我找不到任何方法来标记连接以立即销毁。有谁知道有什么办法吗?

最佳答案

您的 Oracle 数据库连接配置应包含异常排序器:

<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>

这会尝试确定何时发生异常,连接是否可以重用,或者必须断开连接。这是尽最大努力的基础,并非在所有情况下都有效。我对生产安装的偏好是 mark all exceptions as fatal 。为此,只需将异常排序器设置为 org.jboss.resource.adapter.jdbc.GenericExceptionSorter .

关于oracle - 是否可以使 JBoss JDBC 连接失效,以便不再从连接池重新提供连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/921830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com