Oracle JBoss-JDBC连接是否可以失效以使其不';无法从连接池中重新获得补给?

Oracle JBoss-JDBC连接是否可以失效以使其不';无法从连接池中重新获得补给?,oracle,jdbc,jboss,connection-pooling,Oracle,Jdbc,Jboss,Connection Pooling,我有一种情况,JDBC连接将它所连接的Oracle会话置于特定状态(即DBMS_启用闪回模式)。此模式的退出有可能失败(至少在理论上是如此),这意味着会话错误地处于该状态。在这种情况下,连接可以返回到池中,并由另一个线程获得,Oracle会话仍处于DBMS_FLASHBACK启用模式 我已经证明了这是真的。(JBoss 4.2.1) 理想的做法是在模式退出失败时捕获SQLException,并将连接标记为“坏”,这样一旦它返回到池中,JBoss就会破坏连接并创建一个新的连接 但我找不到任何方法来

我有一种情况,JDBC连接将它所连接的Oracle会话置于特定状态(即DBMS_启用闪回模式)。此模式的退出有可能失败(至少在理论上是如此),这意味着会话错误地处于该状态。在这种情况下,连接可以返回到池中,并由另一个线程获得,Oracle会话仍处于DBMS_FLASHBACK启用模式

我已经证明了这是真的。(JBoss 4.2.1)

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


但我找不到任何方法来标记连接,以便立即销毁。有人知道路吗

这是一个很好的问题,我不知道完整的答案,但是一些需要研究的方法是从JBoss故障切换机制开始,它在那里测试连接的有效性。这方面的文档是。然后在测试有效性的SQL中,如果在连接处于DBMS_FLASHBACK启用模式时可能会失败,那么JBoss应该放弃连接。它可能会在下一个连接请求上进行测试,而不是在它返回池时进行测试,尽管这应该是可以接受的。

您的Oracle数据库连接配置应该包含一个异常分类器:

<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
这将尝试确定何时发生异常,连接是否可以重用或必须断开。这是在尽最大努力的基础上进行的,并非在所有情况下都有效。我对生产安装的偏好是。为此,只需将异常分类器设置为
org.jboss.resource.adapter.jdbc.GenericExceptionSorter