Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Gibt es eine Möglichkeit, den JBoss-Verbindungspool wieder mit Oracle zu verbinden, wenn die Verbindung unterbrochen wird?

Sie können zwar den alten „select 1 from dual“-Trick verwenden, aber der Nachteil dabei ist, dass jedes Mal, wenn Sie eine Verbindung aus dem Pool ausleihen, eine zusätzliche Abfrage ausgegeben wird. Bei großen Mengen ist dies verschwenderisch.

JBoss bietet einen speziellen Verbindungsvalidator, der für Oracle verwendet werden sollte:

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

Dabei wird die proprietäre ping()-Methode der Oracle JDBC Connection-Klasse verwendet und anhand des zugrunde liegenden Netzwerkcodes des Treibers bestimmt, ob die Verbindung noch aktiv ist.

Es ist jedoch immer noch verschwenderisch, dies jedes Mal auszuführen, wenn eine Verbindung ausgeliehen wird. Daher möchten Sie möglicherweise die Einrichtung verwenden, bei der ein Hintergrund-Thread die Verbindungen im Pool überprüft und die toten Verbindungen stillschweigend verwirft. Das ist viel effizienter, bedeutet aber, dass wenn die Verbindungen tun tot gehen, schlägt jeder Versuch, sie zu verwenden, bevor der Hintergrund-Thread seine Prüfung durchführt, fehl.

In den Wiki-Dokumenten erfahren Sie, wie Sie die Hintergrundprüfung konfigurieren (suchen Sie nach background-validation-millis ).