我们如何配置以便在基于Spring MVC的Web应用程序中通过JMX获取Hibernate统计信息。有没有更好的方法来跟踪Hibernate性能。
答案 0 :(得分:8)
将hibernate.generate_statistics
设置为true
(在persistence.xml
或hibernate.cfg.xml
或您的会话工厂bean配置中)。然后注册这个bean:
<bean id="hibernateStatisticsMBean" class="org.hibernate.jmx.StatisticsService">
<property name="statisticsEnabled" value="true" />
<property name="sessionFactory" value="#{entityManagerFactory.sessionFactory}" />
</bean>
(如果您没有使用JPA,只需指定您的sessionFactory
bean而不是通过EMF获取它
最后你需要一个mbean服务器和导出器:
<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
<property name="locateExistingServerIfPossible" value="true" />
</bean>
<bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter"
lazy-init="false">
<property name="server" ref="mbeanServer" />
<property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
<property name="beans">
<map>
<entry key="yourkey:name=hibernateStatistics" value-ref="hibernateStatisticsMBean" />
</map>
</property>
</bean>
答案 1 :(得分:0)
感谢Bozho的投入。我做了两个更改,如下所示。
<bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
<property name="server" ref="mbeanServer" />
<property name="beans">
<map>
<entry key="Qvantel:name=hibernateStatistics"
value-ref="hibernateStatisticsMBean" />
</map>
</property>
<property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING" />
</bean>