sql >> Database >  >> RDS >> Oracle

Is er een manier om de JBoss-verbindingspool opnieuw te verbinden met Oracle wanneer de verbindingen slecht worden?

Hoewel je de oude "selecteer 1 van dual"-truc kunt gebruiken, is het nadeel hiervan dat het elke keer dat je een verbinding van de pool leent, een extra vraag stelt. Voor grote volumes is dit een verspilling.

JBoss biedt een speciale verbindingsvalidator die voor Oracle moet worden gebruikt:

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

Dit maakt gebruik van de propriëtaire ping()-methode op de Oracle JDBC Connection-klasse en gebruikt de onderliggende netwerkcode van het stuurprogramma om te bepalen of de verbinding nog steeds actief is.

Het is echter nog steeds verspilling om dit elke keer uit te voeren als een verbinding wordt geleend, dus misschien wilt u de faciliteit gebruiken waar een achtergrondthread de verbindingen in de pool controleert en de dode in stilte weggooit. Dit is veel efficiënter, maar betekent dat als de verbindingen doen gaan dood, elke poging om ze te gebruiken voordat de achtergrondthread zijn controle uitvoert, zal mislukken.

Zie de wiki-documenten voor het configureren van de achtergrondcontrole (zoek naar background-validation-millis ).



  1. Hoe OBJECTPROPERTYEX() werkt in SQL Server

  2. Hoe lijst buitenlandse sleutels op te sommen

  3. Sql Server-trigger voegt waarden van nieuwe rij in een andere tabel in

  4. MySQL Group By en Som totale waarde van andere kolom