首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMX监控EhCache服务器MBeans

JMX监控EhCache服务器MBeans
EN

Stack Overflow用户
提问于 2018-06-06 01:07:44
回答 1查看 530关注 0票数 0

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

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

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

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

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

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-10-22 13:09:50

这实际上非常简单。将以下配置文件添加到您的web项目中

代码语言:javascript
复制
@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()函数将注册您的MBeans。不要忘记在init()方法上添加@PostConstruct注释

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50705497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档