如何监控c3p0连接

Lli*_*gra 12 java hibernate health-monitoring c3p0

我在JBoss战中使用Hibernate,使用c3p0进行连接池,都在我的类路径中的hibernate.cfg.xml配置文件中配置

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

我见过server.log生成的行包含有关连接池的有趣信息:

DEBUG [com.mchange.v2.resourcepool.BasicResourcePool] trace com.mchange.v2.resourcepool.BasicResourcePool@63f5e4b6 [managed:10,unused:9,excluded:0]

对于我的监控池(我正在使用nagios),我想提供一个JSP,告诉我们正在使用多少个连接以及有多少个是免费的,就像日志文件所说的那样.

如何询问c3p0有多少托管和未使用的连接?

Pas*_*ent 22

您可以通过JMX监视连接池.从文档:

通过JMX配置和管理c3p0

如果您的环境中有JMX库和JMX MBeanServer(它们包含在JDK 1.5及更高版本中),您可以通过JMX管理工具(例如jconsole,与jdk 1.5捆绑在一起)检查和配置c3p0数据源.您将发现c3p0在MBean下注册com.mchange.v2.c3p0,其中一个包含有关整个库(被调用C3P0Registry)的统计信息,以及每个PooledDataSource部署的MBean .您可以查看和修改DataSource的配置属性,跟踪Connection,Statement和Thread池的活动,以及通过PooledDataSourceMBean 重置池和DataSource .(您可能希望查看API文档以 PooledDataSource获取可用操作的文档.)

顺便说一下,似乎有Nagios的JMX插件,你不必被迫使用JSP.