Соединение силы свободы 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!
Глобальная транзакция будет завершена, а ресурсы будут откатаны.
Так что, пока у вас нет длительных запросов на обслуживание, стандартное поведение очистки должно дать вам поведение, которое вы ищете. Если у вас есть длительные запросы на обслуживание, вы можете подумать о настройке таймаута транзакции.