Хотя вы можете использовать старый трюк «выбрать 1 из двойного», недостатком этого является то, что он выдает дополнительный запрос каждый раз, когда вы заимствуете соединение из пула. Для больших объемов это расточительно.
JBoss предоставляет специальный валидатор соединения, который следует использовать для Oracle:
<valid-connection-checker-class-name>
org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
</valid-connection-checker-class-name>
Это использует собственный метод ping () класса Oracle JDBC Connection и использует базовый сетевой код драйвера, чтобы определить, живо ли еще соединение.
Однако запускать это каждый раз при каждом заимствовании соединения по-прежнему бесполезно, поэтому вы можете использовать средство, где фоновый поток проверяет соединения в пуле и молча отбрасывает мертвые. Это гораздо более эффективно, но означает, что если соединения do оборвутся, любая попытка использовать их до того, как фоновый поток выполнит свою проверку, завершится неудачей.
См. вики-документы , чтобы узнать, как настроить проверку фона (ищите background-validation-millis
).