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缓存的主要内容,如果未能解决你的问题,请参考以下文章

mybatis集成redis

Ehcache 整合Spring 使用页面对象缓存

使用Spring提供的缓存抽象机制整合EHCache为项目提供二级缓存

Ehcache 整合Spring 使用页面对象缓存

Ehcache 整合Spring 使用页面对象缓存

Ehcache 整合Spring 使用页面对象缓存