我有一个部署了 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/