Hibernate session.close () не возвращает соединение с пулом

В моем приложении есть длительные транзакции, поэтому я попробовал опцию session.close () в конце каждого метода, чтобы гарантировать, что объекты соединения не будут храниться бесконечно долго.

Когда используется опция session.close (), я мог видеть, что объект сеанса Hibernate и соответствующий объект Connection, полученный из session.connection (), уничтожаются должным образом. Но проблема в пуле подключений. Соединение, полученное в ходе сеанса, не возвращается обратно в пул соединений даже после закрытия сеанса. Обнаружены другие запросы, ожидающие подключения из пула.

Я использую транзакцию JTA в своем приложении. В hibernate.cfg.xml я установил для connection.release_mode значение auto (по умолчанию), а для connection.autocommit - значение true.

Кто-нибудь сталкивался с этой проблемой? Пожалуйста, дайте мне знать, что мне здесь не хватает.

Последующие действия: Это подробности моего файла конфигурации гибернации:

<property name="connection.datasource">MXoraDS</property> 
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> 
<property name="connection.release_mode">after_statement</property> 
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WeblogicTransactionManagerLookup</property> 
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
<property name="hibernate.current_session_context_class">org.hibernate.context.JTASessionContext</property> 
<property name="transaction.auto_close_session">true</property> 
<property name="max_fetch_depth">2</property>

Мы используем JSF и EJB 2.1 на уровне приложения, соединяющемся с Oracle DB. after_statement , похоже, не освобождает соединение с пулом. Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация.

14
задан Harry Johnston 6 May 2014 в 00:21
поделиться