一尘不染

如何监视c3p0连接

hibernate

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

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

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

调试[com.mchange.v2.resourcepool.BasicResourcePool]跟踪com.mchange.v2.resourcepool.BasicResourcePool@63f5e4b6
[管理:10,未使用:9,排除:0]

对于我的监视池(我正在使用nagios),我想提供一个JSP来告知正在使用的连接数和空闲的连接数,如日志文件所示。

我怎样才能问c3p0有多少个托管和未使用的连接?


阅读 261

收藏
2020-06-20

共1个答案

一尘不染

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

通过JMX配置和管理c3p0

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

顺便说一下,Nagios似乎有JMX插件,您不必强迫使用JSP。

2020-06-20