Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Existe alguma maneira de reconectar o pool de conexão do JBoss ao Oracle quando as conexões ficam ruins?


Embora você possa usar o antigo truque "selecionar 1 do dual", a desvantagem disso é que ele emite uma consulta extra toda vez que você empresta uma conexão do pool. Para grandes volumes, isso é um desperdício.

O JBoss fornece um validador de conexão especial que deve ser usado para Oracle:
<valid-connection-checker-class-name>
    org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
</valid-connection-checker-class-name>

Isso faz uso do método proprietário ping() na classe Oracle JDBC Connection e usa o código de rede subjacente do driver para determinar se a conexão ainda está ativa.

No entanto, ainda é um desperdício executar isso toda vez que uma conexão é emprestada, portanto, você pode usar o recurso em que um thread em segundo plano verifica as conexões no pool e descarta silenciosamente as inativas. Isso é muito mais eficiente, mas significa que se as conexões não morrer, qualquer tentativa de usá-los antes que o thread em segundo plano execute sua verificação falhará.

Veja a documentação do wiki para saber como configurar a verificação de antecedentes (procure por background-validation-millis ).