Oracle
 sql >> Base de données >  >> RDS >> Oracle

Existe-t-il un moyen de reconnecter le pool de connexions JBoss à Oracle lorsque les connexions tournent mal ?

Bien que vous puissiez utiliser l'ancienne astuce "sélectionner 1 à partir du double", l'inconvénient est qu'elle émet une requête supplémentaire à chaque fois que vous empruntez une connexion au pool. Pour les gros volumes, c'est du gaspillage.

JBoss fournit un validateur de connexion spécial qui doit être utilisé pour Oracle :

<valid-connection-checker-class-name>
    org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
</valid-connection-checker-class-name>

Cela utilise la méthode propriétaire ping() sur la classe Oracle JDBC Connection et utilise le code réseau sous-jacent du pilote pour déterminer si la connexion est toujours active.

Cependant, il est toujours inutile de l'exécuter à chaque fois qu'une connexion est empruntée, vous pouvez donc utiliser la fonction dans laquelle un thread d'arrière-plan vérifie les connexions dans le pool et supprime silencieusement les connexions mortes. C'est beaucoup plus efficace, mais cela signifie que si les connexions font disparaissent, toute tentative de les utiliser avant que le thread d'arrière-plan n'exécute sa vérification échouera.

Consultez la documentation wiki pour savoir comment configurer la vérification des antécédents (recherchez background-validation-millis ).