我有一个Tomcat实例,我已经在其中部署了ehcache-server。现在,我发出rest请求,从我的独立Java类中放入/获取元素。一切都按预期运行。
现在,我想要监控缓存。我知道ehcache-server提供了多个类的mbeans。但是我几乎找不到任何关于如何注册这些mbeans的信息。
当我启动jconsole时,我可以看到Tomcat实例并连接到它。但是我没有看到ehcache-server的任何类(net.sf.ehache.*)。
文档说我可以使用函数registerMBeans来注册mbeans。但是,如何从独立的Java应用程序中调用web应用程序中的方法呢?
恐怕我完全误解了这一点。我可以使用一些关于如何注册mbean和进行监控的指导。
提前谢谢。
发布于 2018-10-22 13:09:50
这实际上非常简单。将以下配置文件添加到您的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()函数将注册您的MBeans。不要忘记在init()方法上添加@PostConstruct注释
https://stackoverflow.com/questions/50705497
复制相似问题