Как контролировать соединения c3p0

Я использую Hibernate в своей войне JBoss, используя c3p0 для объединения пулов, оба настроены в файле конфигурации hibernate.cfg.xml в моем пути к классам

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

Я видел, что server.log генерирует строки с интересной информацией о пуле соединений:

DEBUG [com.mchange.v2.resourcepool.BasicResourcePool] trace [email protected] [управляется: 10, не используется: 9, исключено: 0]

Для моего пула мониторинга (я использую nagios) я хотел бы предоставить JSP, рассказывающий, сколько подключений используется и сколько бесплатно, как говорит файл журнала.

Как я могу спросить c3p0, сколько управляемых и неиспользуемых соединений есть?

Ответ 1

Вы можете контролировать свои пулы пула через JMX. Из документации:

Настройка и управление c3p0 через JMX

Если библиотеки JMX и JMX MBeanServer доступны в вашем окружающей среды (они включают в JDK 1.5 и выше), вы можете проверить и настроить свои источники данных c3p0 с помощью Инструмент администрирования JMX (например, jconsole, в комплекте с jdk 1.5). Вы найдет, что c3p0 регистрирует MBeans под com.mchange.v2.c3p0, один с статистика о библиотеке как целое (называемое C3P0Registry) и MBean для каждого PooledDataSource вас развернуть. Вы можете просматривать и изменять свои Свойства конфигурации DataSource, отслеживать активность Connection, Отчеты и пулы потоков и resetпулов и источников данных через PooledDataSource MBean. (Вы можете хотите просмотреть документы API PooledDataSource для документация операции.)

Кстати, похоже, JMX-плагины для Nagios, вы не вынуждены использовать JSP.

Ответ 2

Вы можете отслеживать с помощью Icinga/Nagios, как это.

  • Загрузите JMXQuery из кода google. Вам нужно будет проверить ревизию 18 так.

    svn checkout -r 18 http://jmxquery.googlecode.com/svn/trunk/ jmxquery-read-only

  • Загрузите этот патч. подстановочный шаблон для c3p0

  • используйте эту команду для исправления исходного кода: (убедитесь, что вы находитесь в каталоге jmxquery-read-only/src/main)

    patch -p0 -i wildcard_patch.diff

  • теперь загрузите Apache Maven и извлеките его с помощью этой команды

    tar -zxvf apache-maven-*-bin.tar.gz

  • теперь cd в папку jmxquery-read-only и выполните следующую команду (предполагая, что apache maven и jmxquery находятся в одной папке)

    ../apache-maven-*/bin/mvn compile

  • выполните следующую команду:

    ../apache-maven-3.0.3/bin/mvn package

  • теперь вы должны создать файл jmxquery.jar, который вы можете использовать для запроса пула соединений c3p0 следующим образом: (файл check_jmx можно получить только из загрузки кода jmxquery с сайта сайта Google, как обычно. используя эту ссылку)

    check_jmx -U service:jmx:rmi:///jndi/rmi://localhost:1090/jmxrmi -O com.mchange.v2.c3p0:type=PooledDataSource* -N 1 -A numBusyConnections -w 50 -c 100