У меня есть пул соединений DBCP в Tomcat. Проблема в том, что при коротком замыкании соединения приложение прерывается, потому что DBCP не будет пытаться снова подключиться позже, когда есть соединение. Могу ли я заставить DBCP автоматически подключаться?Автоподключение подключения к базе данных
ответ
Есть 2 способа «решить» это, хотя и есть некоторые вопросы:
Вы можете использовать «validationQuery» (смотри ниже), чтобы иметь тестовый запуск запроса, прежде чем идти (как правило, что-то . как «выберите 1 из двух», который будет использоваться для проверки соединения перед/после того, как вы получите/передать их в пул Это добавляет дополнительный вызов для каждого запроса соединения из пула см:. http://wiki.apache.org/commons/DBCP
Вместо этого для каждого запроса , вы можете заставить idleEvictorThread сделать это, установив testWhileIdle, хотя в некоторых версиях этот поток может вызвать блокировку при высокой нагрузке. См: http://commons.apache.org/dbcp/configuration.html для получения более подробной информации о том, что и других вариантах
Не думаю, что ДБХП делает это, но BoneCP (http://jolbox.com) может быть выполнен с возможностью автоматического воспроизведения каких-либо операций, когда DB или сеть идет вниз. Это полностью прозрачно для вашего приложения.
Как это настроить? –
Проверьте функцию transactionReplay. Не используйте это с Hibernate, хотя (у них есть ошибки) – wwadge
Уверен, вы называете 'connection.close()' в блоке 'finally' блока' try', когда вы его приобрели? Везде? *Действительно да? – BalusC