Как правильно уничтожить пул DBCP Apache Commons в Java?

Я хотел бы использовать PoolingDataSource в качестве пула соединений (API по адресу: http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/PoolingDataSource.html), но я не знаю, что делать с пулом, когда он мне больше не нужен Это. Что, если я хочу подключиться к новой базе данных и мне больше не нужны подключения в старом пуле? В пуле нет метода close.


person Buttons840    schedule 16.09.2011    source источник


Ответы (3)


Вам не обязательно убивать этот пул, чтобы создать новый.

Вы можете управлять подключениями в нем с помощью параметров maxIdle, timeBetweenEvictionRunsMillis и minEvictableIdleTimeMillis (см. здесь) чтобы обеспечить закрытие незанятых соединений в разумные сроки.

Или вы можете настроить GenericObjectPool с этими параметрами программно и использовать при создании PoolingDataSource. У него есть метод close(), если вы хотите принудительно его использовать.

person Brian Smith    schedule 16.09.2011

Извините, что не ответил на ваш вопрос напрямую, но могу ли я порекомендовать не использовать DBCP? У него был ряд серьезных проблем, которые другие библиотеки извлекли из этого и исправили.

Есть намного лучшие пулы.

person erickson    schedule 16.09.2011
comment
Хотя довольно точно; следует отметить, что DBCP активно поддерживается с момента предоставления этого ответа. - person Brett Ryan; 09.05.2016

Какой бассейн вы используете? Если вы используете AbandonedObjectPool, это подкласс GenericObjectPool Commons Pool. , который имеет close () метод.

person Tom Anderson    schedule 16.09.2011
comment
Я использую PoolingDataSource, как я сказал в вопросе. Я также связался с его документами API. - person Buttons840; 26.09.2011