Это распространенная проблема, связанная с использованием пула соединений. Когда приложение заимствует соединение из пула, должен ли сам пул "тестировать" соединение, чтобы убедиться, что оно все еще действует, или оно должно оставить это на усмотрение приложения?
Если пул проверяет соединение, это неизбежно включает отправку чего-либо по соединению на сервер базы данных (обычно это какой-то базовый SELECT). В системах с высоким трафиком это чрезвычайно расточительно и может значительно увеличить нагрузку на сервер базы данных.
Однако на сайтах с низким трафиком, где ваша база данных может справиться с дополнительной нагрузкой, вы можете настроить свой источник данных так, чтобы JBoss проверял соединение перед передачей его в ваше приложение. Если соединение разорвано, JBoss удалит его из пула и получит новое, чтобы он выдержал перезапуск базы данных.
Любой, добавьте это в ваш mysql-ds.xml
файл:
<check-valid-connection-sql>select 1 from mytable</check-valid-connection-sql>
Вы должны выбрать запрос самостоятельно, убедитесь, что он не дорогой, потому что он будет запускать лот .
См. Вики-документацию JBoss , чтобы узнать, как изменить эти файлы источника данных.