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监控即可,可以通过监控工具清除缓存来调试和验证我们的业务方法是否可用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值