【发布时间】:2014-05-02 09:34:31
【问题描述】:
我正在努力配置 hibernate jmx,以便通过 hibernate jconsole 插件获得一些指标。
其实我是按照hibernate jconsole插件官网的配置:http://hibernate-jcons.sourceforge.net/usage.html#pre-requisites
但它不起作用,所以我在互联网上搜索了几个小时,测试了一些东西。我发现的唯一与我的问题相关的事情是:How to configure Hibernate statistics in Spring 3.0 application?
但它仍然不起作用。我需要你的帮助。
这里是配置:
@PersistenceContext(unitName = DomainConstants.JPA_PU_BACKEND)
private EntityManager em;
@Bean(name="jmxExporter")
public MBeanExporter jmxExporter() throws MalformedObjectNameException, InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException {
MBeanExporter exporter = new MBeanExporter();
Map<String, Object> beans = new HashMap<String, Object>();
beans.put("Hibernate:application=Statistics", "hibernateStatisticsBean");
MBeanServerFactoryBean serverFactory = new MBeanServerFactoryBean();
serverFactory.setLocateExistingServerIfPossible(true);
// --- new1
MBeanServer MBeanServer = serverFactory.getObject();
exporter.setServer(MBeanServer);
exporter.setRegistrationPolicy(RegistrationPolicy.REPLACE_EXISTING);
// end -- new1
exporter.setBeans(beans);
return exporter;
}
@Bean(name="hibernateStatisticsBean")
public StatisticsService hibernateStatisticsBean() {
StatisticsService service = new StatisticsService();
service.setStatisticsEnabled(true);
service.setSessionFactory(((Session)em.getDelegate()).getSessionFactory());
return service;
}
我还将 hibernate.generate_statistics 设置为 true 以进行休眠配置。
我被困住了。我真的需要这个工具来工作,因为我们有需要花费大量时间的查询。这个工具会很完美。
编辑: MBean 似乎已加载。当我进行查询时,属性会发生变化。 image2 http://imageshack.com/a/img838/5904/dj8c.png
但是当我尝试调用其中一项操作时:getQueryStatistics、getCollectionStatistics 等。我收到以下错误: image1 http://imageshack.com/a/img838/9693/ibkd.png
实际上我没有关于查询的统计信息,没有显示任何内容: image3 http://imageshack.com/a/img835/8088/laoz.png
【问题讨论】:
-
尝试直接设置 bean 引用,而不是其名称:
beans.put("Hibernate:application=Statistics", hibernateStatisticsBean())。 -
感谢安德烈的帮助。我尝试了您的解决方案,但没有任何改变。
-
当你说它不起作用时,这是什么意思? MBean 不显示在 JMX 中,您可以连接到 JMX 服务器等吗?可以发一些日志吗?
-
我编辑了主帖。我在启动应用程序时收到以下日志:mai 04, 2014 9:10:22 PM org.springframework.jmx.export.MBeanExporter afterPropertiesSet Infos: Registering beans for JMX exposure on startup mai 04, 2014 9:10:22 PM org .springframework.jmx.export.MBeanExporter registerBeanInstance 信息:位于 MBean 'Hibernate:application=Statistics':向 JMX 服务器注册为 MBean [Hibernate:application=Statistics]
-
文档说休眠 jar 需要在 jconsole 的类路径中。你有它应该的地方吗?