我们的 JBoss 和 Oracle 位于不同的服务器上。连接似乎已断开并导致 JBoss 出现问题。如果连接状况不佳,同时我们首先要找出连接被丢弃的原因,我怎样才能让 JBoss 重新连接到 Oracle?
最佳答案
虽然您可以使用旧的“从双中选择 1”技巧,但这样做的缺点是每次从池中借用连接时都会发出额外的查询。对于大批量来说,这是一种浪费。
JBoss 提供了一个特殊的连接验证器,应该用于 Oracle:
<valid-connection-checker-class-name>
org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
</valid-connection-checker-class-name>
这利用了 Oracle JDBC Connection 类上专有的 ping() 方法,并使用驱动程序的底层网络代码来确定连接是否仍然有效。
但是,每次借用连接时都运行此操作仍然很浪费,因此您可能需要使用后台线程检查池中的连接并默默丢弃失效连接的功能。这效率更高,但意味着如果连接确实失效,则在后台线程运行检查之前使用它们的任何尝试都将失败。
请参阅wiki docs了解如何配置后台检查(查找background-validation-millis
)。
关于oracle - 当连接出现问题时,有什么方法可以让 JBoss 连接池重新连接到 Oracle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/128527/