Хибернейт поддерживает сбор самой разнообразной информации и метрик, которые могут быть весьма полезны при отладке и разработке. При использовании широко распространенной связки Spring+Hibernate можно очень легко получить доступ к этим данным следующим образом:
1) в конфигурации SessionFactory указываем:
<property name="hibernate.generate_statistics">true</property>
это включает собственно сбор статистики.
2) регистрируем следующие бины в Spring:
<bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter">
<property name="autodetect" value="false" />
<property name="assembler">
<bean id="jmxAssembler" class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
<property name="attributeSource">
<bean class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource" />
</property>
</bean>
</property>
<property name="beans">
<map>
<entry key="org.hibernate:name=statistics">
<bean class="org.hibernate.jmx.StatisticsService">
<property name="statisticsEnabled" value="true" />
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
</entry>
</map>
</property>
</bean>
Этот бин предоставляется нам Spring'ом и делает всю работу по экспорту статистики посредством JMX и сам выполняет все необходимые действия, нам нужно только передать ему нашу SessionFactory(выделено жирным).
3) В Томкате добавляем следующие параметры JVM:
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
Здесь важен порт - туда мы будем коннектиться JConsole'ю, которая и отобразит всю статистику.
4) Запустив Томкат и убедившись, что ошибок и эксепшенов нет, идем в JAVA_HOME/bin и запускаем отттуда jconsole.exe. Когда поднимется форма, идем на вкладку Remote (удаленные соединения с JMX-сервером) и указываем host(Томката) и port(8004 в нашем случае). После успешного соединения можно смотреть самую разнообразную статистику по JVM вообще и Hibernate в частности.
Комментариев нет:
Отправить комментарий