通过JMX监控Ehcache

时间:2016-11-06 13:21:54

标签: spring ehcache

我在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 bean:

enter image description here

你知道我错过了什么来启用统计数据吗?

1 个答案:

答案 0 :(得分:1)

问题来自于您只是创建ManagementService而不是初始化它。

您的managementService方法需要在创建的init()上调用ManagementService方法。

除非您出于其他目的有效地需要访问ManagementService,否则不需要将其公开为bean,您可以在{{1}内部使用静态ManagementService.registerMBeans(CacheManager, MBeanServer, boolean, boolean, boolean, boolean)来替换它。 }或ehCacheManagerFactory()方法。

静态方法创建ehCacheManager()并初始化它。