使用Tomcat JDBC连接池时,无法在jconsole中看到JMX条目

时间:2010-10-05 15:57:03

标签: java tomcat jdbc jmx

我们正在评估从C3P0连接池切换到Tomcat JDBC连接池(as described here)。

它似乎可以作为连接池工作,但是当我运行jconsole时,我似乎无法看到任何JMX条目。
开箱即用的C3P0通过JMX(Tomcat)提供了大量的操作和属性 JDBC连接池没有给我(对我来说)。

根据上面链接的页面,有一个jmxEnabled标志,默认为true。我明确地设置了它,但似乎没有任何区别。

我错过了什么?

顺便说一下,我正在运行一个相当标准的Java6 / Spring / Hibernate应用程序。

4 个答案:

答案 0 :(得分:10)

如果在spring上下文中配置池,则应手动导出bean。仅当您在tomcat容器中配置池并从JNDI导入它时,Autoexport才有效。见http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#JMX

您可以将此弹出配置用于导出池信息到JMX:

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource">
   ... skipped ...
</bean>

<bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
    <property name="beans">
        <map>
            <entry key="bean:name=DataSource" value="#{dataSource.getPool().getJmxPool()}"/>
        </map>
    </property>
</bean>

Config仅适用于Spring 3.0及更高版本,因为它使用spring表达式语言

答案 1 :(得分:0)

您是否在树下看到任何条目

Catalina -> DataSource -> javax.sql.DataSource

列出了活动连接数,空闲连接数和一些其他常见统计信息。 除此之外,您希望哪种信息不受监控?

答案 2 :(得分:0)

Darren,如果你在JConsole中的Catalina/DataSource/javax.sql.DataSource/<name>下没有看到对象名,那么我想知道数据源是否定义不正确,或者在Tomcat启动时它是否未连接到数据库。

布鲁斯

答案 3 :(得分:0)

支持肖恩的帖子:

JConsole的MBean中javax.sql.DataSource条目的位置是:

  • Catalina
    • DataSource
      • /[Name_of_deployed_application] //例如“/的DomainService
        • /[Host_name_of_the_deployed_application] //e.g。 “本地主机”
          • javax.sql.DataSource