通过 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 并初始化它。