Автоматическое переподключение базы данных - PullRequest
5 голосов
/ 30 марта 2010

У меня есть пул соединений DBCP в Tomcat. Проблема заключается в том, что при кратковременном обрыве соединения приложение разрывается, потому что DBCP не будет пытаться повторно подключиться позже при наличии соединения. Могу ли я получить DBCP для автоматического подключения?

Ответы [ 2 ]

5 голосов
/ 01 апреля 2010

Есть 2 способа «решить» это, хотя у обоих есть некоторые проблемы:

  1. Вы можете использовать «validationQuery» (см. Ниже), чтобы выполнить тестовый запрос перед тем, как идти (обычно что-то вроде «выберите 1 из двойного»), который будет использоваться для тестирования соединений до / после того, как вы получите / даете их в пул. Это добавляет дополнительный вызов на запрос соединения из пула. См .: http://wiki.apache.org/commons/DBCP

  2. Вместо того чтобы делать это для каждого запроса, вы можете сделать так, чтобы idleEvictorThread делал это, устанавливая testWhileIdle, хотя в некоторых версиях этот поток может вызывать взаимоблокировку при высокой нагрузке. См .: http://commons.apache.org/dbcp/configuration.html для более подробной информации об этом и других параметрах

1 голос
/ 23 июня 2010

Не думайте, что DBCP делает это, но BoneCP (http://jolbox.com) можно настроить на автоматическое воспроизведение любых транзакций при отключении БД или сети. Это полностью прозрачно для вашего приложения.

...