Chociaż możesz użyć starej sztuczki „wybierz 1 z podwójnych”, wadą tego jest to, że generuje dodatkowe zapytanie za każdym razem, gdy pożyczasz połączenie z puli. W przypadku dużych ilości jest to marnotrawstwo.
JBoss zapewnia specjalny walidator połączeń, który powinien być używany dla Oracle:
<valid-connection-checker-class-name>
org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
</valid-connection-checker-class-name>
Wykorzystuje to zastrzeżoną metodę ping() w klasie Oracle JDBC Connection oraz bazowy kod sieciowy sterownika w celu określenia, czy połączenie jest nadal aktywne.
Jednak uruchamianie tego za każdym razem, gdy połączenie jest pożyczane, nadal jest marnotrawstwem, więc możesz użyć funkcji, w której wątek w tle sprawdza połączenia w puli i po cichu odrzuca te martwe. Jest to znacznie wydajniejsze, ale oznacza, że jeśli połączenia tak zgasną, każda próba użycia ich przed uruchomieniem wątku w tle zakończy się niepowodzeniem.
Zobacz dokumentację wiki, aby dowiedzieć się, jak skonfigurować sprawdzanie w tle (poszukaj background-validation-millis
).