JMX监控EhCache服务器MBean

时间:2018-06-05 17:07:44

标签: java tomcat ehcache jmx

我有一个Tomcat实例,我已经部署了ehcache-server。现在我发出休息请求来从我的独立Java类中放入/获取元素。一切都按预期工作。

现在我想监控缓存。我理解ehcache-server提供了多个类的mbeans。但我几乎找不到有关如何注册这些mbeans的任何信息。

当我启动jconsole时,我可以看到Tomcat实例并连接到它。但我没有看到ehcache-server的任何类(net.sf.ehache。*)。

文档说我可以使用函数registerMBeans来注册mbeans。但是如何从我的独立Java应用程序中调用Web应用程序中的方法?

恐怕我完全误解了这一点。我可以使用一些关于如何注册mbeans并进行监控的指针。

提前致谢。

1 个答案:

答案 0 :(得分:0)

实际上很简单。将此添加到您的Web项目中的配置文件下方

@Configuration
@EnableCaching
public class SpringCachePocConfig implements CachingConfigurer {

    net.sf.ehcache.CacheManager newCacheManager;

    @Bean(destroyMethod = "shutdown")
    public net.sf.ehcache.CacheManager ehCacheManager() {
        //Construct you cache here.

        net.sf.ehcache.config.Configuration config = new net.sf.ehcache.config.Configuration();
        config.addCache(<Your cache>);

        this.newCacheManager = new net.sf.ehcache.CacheManager(config);
        return newCacheManager;
    }


    @Bean
    public ManagementService managementService() {
        return new ManagementService(ehCacheManager(), mbeanServer(), true, true, true, true);

    }


    @Bean
    @Override
    public CacheManager cacheManager() {
        return new EhCacheCacheManager(ehCacheManager());
    }


    @Bean
    public MBeanServer mbeanServer() {
        MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
        return mBeanServer;   
    }

    @PostConstruct
    public void init() {
        ManagementService.registerMBeans(ehCacheManager(), mbeanServer(), true, true, true, true);
    }


}

init()函数将注册您的MBean。不要忘记在@PostConstruct方法上方添加init()注释