2016-10-11 7 views
1

Я использую пул соединений dbcp и имеет длительные хранимые процедуры. Открывается несколько соединений, и серверная машина базы данных (mssql) отключается, что оставляет эти соединения открытыми. Как я могу получить список открытых соединений из пула и закрыть их вручную из моего веб-приложения java?DBCP Закройте все открытые соединения

InitialContext initCtx = new InitialContext(); 
      Object obj = initCtx.lookup("java:comp/env/jdbc/oscon"); 
      BasicDataSource source = (BasicDataSource) obj; 

Я использую Викисклад dbcp2-2.0.1.jar

ответ

1

Вам не нужно закрывать их вручную. Лучше всего всего настроить Connection testing, и в этом случае c3p0 будет молча (но лениво) закрыть старые соединения и приобрести новые.

Если вы хотите быть более активными, чем это, просто вызовите hardReset() на источник c3p0 данных (после приведения его в PooldedDataSource

+0

Что способ бросить BasicDataSource к PooledDataSource – odedravijay

+0

InitialContext initCtx = новый InitialContext().?; \t \t \t объект OBJ = initCtx.lookup ("Java: комп/ENV/JDBC/OSCON"); \t \t \t BasicDataSource источник = (BasicDataSource) OBJ; \t \t \t PooledDataSource PDS = (P ooledDataSource) DataSources.pooledDataSource (источник); \t \t \t pds.hardReset(); – odedravijay

+0

c3p0 не предлагает источник BasicDataSource. после вашего поиска, попробуйте 'PooledDataSource pds = (PooledDataSource) obj;' непосредственно. затем жесткий сброс, как вы это сделали. –

Смежные вопросы