Spring与JMX集成,实现方式灵活而且简单,主要体现在:
1、可以自动探测实现MBean接口的MBean对象,而且可以将一个普通的Spring Bean注册为MBean;
2、定制管理MBean的接口,根据需要暴露特定管理MBean的操作;
3、使用注解定义MBean管理接口;
4、可以实现对本地和远程MBean的代理。
标准MBean管理
对于实现标准MBean接口MBean资源,在Spring中可以设置不同的探测模式,主要是通过MBeanExporter来实现。例如,定义MBean管理接口:
对应的MBean实现,如下所示:
上面是一个标准MBean的实现,可以使用JavaSE 6平台的JMX服务来管理,但是在Spring集成的环境下,也可以重用这些MBean实现,例如下面是一个典型的配置:
上面配置中,MBeanExporter会查找本地MBean Server,指定的探测模式autodetectModeName为AUTODETECT_ALL,这也是MBeanExporter的默认值(这个属性完全可以省略,不用配置),无需手动向MBean Server进行注册,便能管理配置的MBean对象“mydomain:myobj=MyObjectMBean”。
对于探测模式autodetectModeName属性,Spring提供了4个取值:
AUTODETECT_NONE 不启用自动探测,需要手动向MBean Server进行注册,即通过MBeanExporter的beans属性进入注册;
AUTODETECT_MBEAN 在当前IOC容器中进行查找MBean组件;
AUTODETECT_ASSEMBLER 设置根据MBeanInfoAssembler的策略进行探测;
AUTODETECT_ALL 自动探测,是AUTODETECT_MBEAN和AUTODETECT_ASSEMBLER的并集。
另外,Spring的MBeanExporter也提供了autodetect属性,取值为true和false,指定对MBean组件的探测行为。
普通Spring Bean管理
对于一个普通的Spring Bean,也可以作为MBean来进行管理,Spring可以很好地支持。如下面一个普通的Java类: