我们正在评估从C3P0连接池切换到Tomcat JDBC连接池(as described here)。
它似乎可以作为连接池工作,但是当我运行jconsole时,我似乎无法看到任何JMX条目。
开箱即用的C3P0通过JMX(Tomcat)提供了大量的操作和属性
JDBC连接池没有给我(对我来说)。
根据上面链接的页面,有一个jmxEnabled标志,默认为true。我明确地设置了它,但似乎没有任何区别。
我错过了什么?
顺便说一下,我正在运行一个相当标准的Java6 / Spring / Hibernate应用程序。
答案 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