Автоматический снова соединяются соединения с базой данных

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

5
задан skaffman 17 January 2011 в 10:23
поделиться

2 ответа

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

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

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

5
ответ дан 14 December 2019 в 13:32
поделиться

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

1
ответ дан 14 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: