Соединение силы свободы Websphere обратно в пул

Допустим, какой-то фрагмент кода взял соединение из пула и не вернул его обратно в пул.

Я хочу знать, существует ли какая-либо свободная настройка, которая принудительно установит соединение с пулом, если по истечении некоторого времени простоя соединение не будет идентифицировано, может быть 10 секунд.

Я использую свободу 8.5.5.9

1 ответ

Решение

В Websphere Liberty нет механизма, который принудительно возвращал бы используемые подключения через пул через некоторое время.

Наиболее близким к этому поведению будет "тайм-аут транзакции" (по умолчанию 120 с), который истечет время ожидания глобальных транзакций после истечения времени ожидания, и все ресурсы в глобальной транзакции будут очищены.

Однако по умолчанию WebSphere всегда будет очищать утечку соединений после завершения области транзакции (будь то локальное ограничение транзакции или глобальная транзакция).

Например, если я делаю следующее в сервлете:

Connection conn = ds.getConnection();
// conn never closed!

Соединение будет автоматически закрыто и возвращено в пул соединений после завершения запроса сервлета.

Если вы делаете похожую вещь в глобальной транзакции:

tx.begin();
Connection conn = ds.getConnection();
// conn never closed!
// tx never ended!

Глобальная транзакция будет завершена, а ресурсы будут откатаны.

Так что, пока у вас нет длительных запросов на обслуживание, стандартное поведение очистки должно дать вам поведение, которое вы ищете. Если у вас есть длительные запросы на обслуживание, вы можете подумать о настройке таймаута транзакции.

Другие вопросы по тегам