Как я могу найти время ожидания соединения JDBC для спящего режима - PullRequest
1 голос
/ 22 декабря 2010

В настоящее время у меня есть долго работающий поток, который использует сеанс гибернации для выполнения многих обновлений.В настоящее время наш тайм-аут соединения c3p0 установлен на 20 минут, и иногда он истекает из-за количества обновлений, которые мы выполняем.

Решение, которое я имею, состоит в том, чтобы периодически возвращать соединение с пулом путем закрытия сеанса (мы настроили hibernate таким образом) и получать новый.Увеличение тайм-аута нежелательно, поскольку один и тот же пул используется для всего приложения.

Проблема в том, что я не знаю, когда вернуть соединение с пулом, потому что я не знаю, какое время ожиданиясоединение есть.Я знаю, какая текущая настройка находится в нашем файле свойств, но это может быть изменено без моего ведома в любое время, поэтому оно хрупкое.Наличие счетчика и возврат соединения в зависимости от количества выполненных обновлений не идеален, но может быть моим последним средством.

У меня сеанс гибернации, как я могу получить тайм-аут соединения jdbc-соединения, поддерживающего сеанс?Использование классов SessionFactory и SessionFactoryImpl вполне приемлемо.

Ответы [ 2 ]

1 голос
/ 26 декабря 2010

HibernateServiceMBean и StatisticsServiceMBean - это MBean-компоненты, предоставляемые Hibernate в контексте с JMX. HibernateService и StatisticsService являются классами реализации этих интерфейсов.

HibernateServiceMBean содержит несколько методов для свойств конфигурации Hibernate, таких как источник данных, стратегия транзакций, кэширование, диалект и т. Д.

org.hibernate.cfg.Environment.C3P0_TIMEOUT - это свойство, которое указывает максимальное время простоя для пула соединений C3P0.

0 голосов
/ 26 декабря 2010

Невозможно получить обратно свойства из SessionFactory или SessionFactoryImpl.Также, если вы заметили, что используете сервис jmx, ответ Наяна может оказаться бесполезным.Мое предложение,

import org.hibernate.cfg.Configuration;

Configuration.config (); // считывает все свойства из hibernate.cfg.xml Свойства props = Configuration.getProperties ();// это вернет свойства в hibernate.cfg.xml

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...