Мое приложение имеет длительные транзакции и, следовательно, я попробовал параметр session.close() в конце каждого метода, чтобы гарантировать, что объекты соединения не будут храниться бесконечно долгое время ,Hibernate session.close() не возвращает соединение с пулом
Когда используется параметр session.close(), я мог видеть, что объект сеанса Hibernate и соответствующий объект Connection, полученный из session.connection(), были уничтожены должным образом. Но проблема связана с пулом соединений. Соединение, полученное сеансом, не возвращается обратно в пул соединений даже после закрытия сеанса. Другие запросы находятся в ожидании подключения из пула.
Я использую транзакцию JTA в своем приложении. В hibernate.cfg.xml я установил connection.release_mode в auto (по умолчанию) и connection.autocommit в true.
Неужели кто-нибудь столкнулся с этой проблемой? Пожалуйста, дайте мне знать, что мне здесь не хватает.
Последующая деятельность: Это мои Hibernate сведения о файлах конфигурации:
<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. after_statement
, похоже, не отключает соединение с пулом. Пожалуйста, дайте мне знать, если вам нужны подробности.
Вы должны предоставить более подробную информацию о конфигурации. например, какая транзакционная менеджер и конфигурация транзакций, как вы управляете своими транзакциями и т. д. – Salandur