我使用的是Spring 4.3.7,Hibernate 5.2.9,hibernate-jcache 5.2.10和ehcache 3.3.1。
这是相关的JPA配置属性:
properties.put("hibernate.cache.use_second_level_cache", "true");
properties.put("hibernate.cache.use_query_cache", "true");
properties.put("hibernate.cache.region.factory_class", "org.hibernate.cache.jcache.JCacheRegionFactory");
properties.put("hibernate.javax.cache.provider", "org.ehcache.jsr107.EhcacheCachingProvider");
properties.put("hibernate.generate_statistics", "true");
我已在我的实体和查询上配置了L2缓存。
在控制台日志输出中,我可以看到正在进行一些缓存。但我想使用jconsole
来探索统计数据。
我的问题是如何为jconsole
公开这些软件包版本的JMX统计服务,以便能够呈现统计信息?
我只有:
@Bean
public void ehCacheManager() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory(Vedantas.PU_NAME);
SessionFactory sf = emf.unwrap(SessionFactory.class);
StatisticsService statsMBean = new StatisticsService();
statsMBean.setSessionFactory(sf);
statsMBean.setStatisticsEnabled(true);
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
mBeanServer.registerMBean(statsMBean, new ObjectName("Hibernate:application=Statistics"));
}
这是jconsole documentation的Enable JMX support inside Hibernate - Using the API
部分,它并不真正有用,因为
StatisticsService
是一个抽象类,无法实例化。
所以,请给我一些工作配置。
此外,运行java -jar hibernate-jconsole-1.0.7.jar
在我的环境中什么都不做。为什么会这样?
谢谢!