Spring项目中使用JMX监控EhCache缓存
Posted 无处不在的海贼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring项目中使用JMX监控EhCache缓存相关的知识,希望对你有一定的参考价值。
在Java中用了EhCache后,有时候可能会有如下想法:
1、调用了业务方法后,数据真的被缓存到EhCache中了吗?
2、现在EhCache中有多少个Cache对象,每个Cache对象里面有多少个缓存数据
3、能否动态清除EhCache缓存数据,便于开发者可以调试程序是否正确
在Java中可以通过JMX查看到EhCache中的统计情况,EhCache官方文档中有一个连接说明了相关的操作:
https://www.ehcache.org/documentation/2.7/operations/jmx.html
链接中的这个图片说明了JMX可以监控如下几类EhCache信息:
也就是说在JMX监控EhCache的时候,有以下4个MBean信息可以用:
- CacheManager
- Cache
- CacheConfiguration
- CacheStatistics
每个MBean信息都可以使用监控工具看到各自的信息。
比如使用CacheConfiguration可以看到缓存的相关配置信息,即EhCache.xml中配置的信息。
比如使用CacheStatistics可以看到当前每个缓存的数量及统计信息等。
在Java业务方法中,可以定义如下方法,在系统启动时向JMX中注册缓存的MBean信息,从而使用Java自带的监控工具jconsole/jvisualvm工具查看监控的ehcache信息:
@PostConstruct
public void registerMBean() {
CacheManager cacheManager = (CacheManager) applicationContext.getBean("cacheManagerFactory");
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
ManagementService.registerMBeans(cacheManager, mBeanServer, true, true, true, true);
}
代码相关含义说明如下:
1、在Spring IoC容器中,要求已经提前定义好了CacheManagerFactory对象,这个类应该是一个继承了FactoryBean接口的实现类,当在容器中存在了这个cacheManagerFactory对象后,从Spring中获取该类的实例后,就是一个CacheManager接口的实现类的对象。
2、代码第二行调用了Java的JMX方法,获得JMX的MBeanServer。
3、代码第三行使用了EhCache中的ManagementService类,向其注册信息。
系统启动后,在命令行中启动JConsole监控即可,可以通过监控工具清除缓存来调试和验证我们的业务方法是否可用。
以上是关于Spring项目中使用JMX监控EhCache缓存的主要内容,如果未能解决你的问题,请参考以下文章