通过 JMX 监控 Ehcache
Monitoring Ehcache via JMX
我已经在 Spring + Hibernate 中实现了应用程序。为了优化 ORM 操作,我遵循了 this 教程来启用对 Ehcache 的监控:
@EnableWebMvc
@EnableSpringDataWebSupport
@EnableCaching
...
public class SpringWebConfig extends WebMvcConfigurerAdapter {
....
@Bean
public EhCacheCacheManager ehCacheManager() {
EhCacheCacheManager cacheManager = new EhCacheCacheManager();
cacheManager.setCacheManager((net.sf.ehcache.CacheManager) ehCacheManagerFactory().getObject());
return cacheManager;
}
@Bean
public EhCacheManagerFactoryBean ehCacheManagerFactory() {
EhCacheManagerFactoryBean cmfb = new EhCacheManagerFactoryBean();
cmfb.setConfigLocation(new ClassPathResource("ehcache.xml"));
cmfb.setShared(true);
return cmfb;
}
@Bean
public ManagementService managementService() {
return new ManagementService(ehCacheManager().getCacheManager(), mBeanServer(), true, true, true, true);
}
@Bean
public MBeanServer mBeanServer() {
MBeanServer bean = ManagementFactory.getPlatformMBeanServer();
return bean;
}
}
但是我在 jConsole 中看不到任何 ehache beans:
你知道我是否错过了启用统计信息的功能吗?
问题是因为您只是在创建 ManagementService
而不是初始化它。
您的 managementService
方法需要在创建的 ManagementService
.
上调用 init()
方法
除非您出于其他目的实际上需要访问 ManagementService
,否则不需要将其作为 bean 公开,您可以在 [=] 中使用静态 ManagementService.registerMBeans(CacheManager, MBeanServer, boolean, boolean, boolean, boolean)
来替换它16=] 或 ehCacheManager()
方法。
静态方法创建 ManagementService
并初始化它。
我已经在 Spring + Hibernate 中实现了应用程序。为了优化 ORM 操作,我遵循了 this 教程来启用对 Ehcache 的监控:
@EnableWebMvc
@EnableSpringDataWebSupport
@EnableCaching
...
public class SpringWebConfig extends WebMvcConfigurerAdapter {
....
@Bean
public EhCacheCacheManager ehCacheManager() {
EhCacheCacheManager cacheManager = new EhCacheCacheManager();
cacheManager.setCacheManager((net.sf.ehcache.CacheManager) ehCacheManagerFactory().getObject());
return cacheManager;
}
@Bean
public EhCacheManagerFactoryBean ehCacheManagerFactory() {
EhCacheManagerFactoryBean cmfb = new EhCacheManagerFactoryBean();
cmfb.setConfigLocation(new ClassPathResource("ehcache.xml"));
cmfb.setShared(true);
return cmfb;
}
@Bean
public ManagementService managementService() {
return new ManagementService(ehCacheManager().getCacheManager(), mBeanServer(), true, true, true, true);
}
@Bean
public MBeanServer mBeanServer() {
MBeanServer bean = ManagementFactory.getPlatformMBeanServer();
return bean;
}
}
但是我在 jConsole 中看不到任何 ehache beans:
你知道我是否错过了启用统计信息的功能吗?
问题是因为您只是在创建 ManagementService
而不是初始化它。
您的 managementService
方法需要在创建的 ManagementService
.
init()
方法
除非您出于其他目的实际上需要访问 ManagementService
,否则不需要将其作为 bean 公开,您可以在 [=] 中使用静态 ManagementService.registerMBeans(CacheManager, MBeanServer, boolean, boolean, boolean, boolean)
来替换它16=] 或 ehCacheManager()
方法。
静态方法创建 ManagementService
并初始化它。