Как настроить статистику Hibernate в приложении Spring 3.0? - PullRequest
6 голосов
/ 15 июля 2011

Как настроить так, чтобы мы получали статистику Hibernate через JMX в веб-приложениях на основе Spring MVC. Есть ли лучший способ отслеживания производительности Hibernate.

Ответы [ 2 ]

8 голосов
/ 15 июля 2011

Установите hibernate.generate_statistics на true (либо в persistence.xml, либо в hibernate.cfg.xml, либо в конфигурации фабричного компонента сеанса). Затем зарегистрируйте этот боб:

<bean id="hibernateStatisticsMBean" class="org.hibernate.jmx.StatisticsService">
    <property name="statisticsEnabled" value="true" />
    <property name="sessionFactory" value="#{entityManagerFactory.sessionFactory}" />
</bean>

(Если вы не используете JPA, просто укажите боб sessionFactory вместо того, чтобы получать его через 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>
0 голосов
/ 16 июля 2011

Спасибо Божо за ваш вклад.Я сделал два изменения, как указано ниже.

 <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>  
...