java - JMX 监控 EhCache Server MBean

标签 java tomcat ehcache jmx

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

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

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

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

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

提前致谢。

最佳答案

其实很简单。在您的 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。不要忘记在 init() 方法上添加 @PostConstruct 注释

关于java - JMX 监控 EhCache Server MBean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50705497/

相关文章:

java - 在 Java 线程中模拟竞争条件的代码

hibernate - 如何动态/以编程方式配置 hibernate 以使用 h2 数据库 jndi 连接池?

Java Maven WebApp Tomcat

java - 有没有办法使基于 Ehcache 文件的配置覆盖编程配置?

java - 在模块化 java 应用程序中配置 ehCache 的最佳实践

java - EhCache Weblogic死锁?

java - 限制ip地址访问web服务

java - 如何查看应用程序正在使用的当前堆大小?

java - Java/Tomcat 中的异步方法

Firebase 实时数据库中的 Java HTTP 调用用于软件中的数据更改