JMX在J2SE 5和J2SE 6平台略有不同,我们基于J2SE 6来学习JMX。JMX已经成功Java 2平台的一部分,它的目标是动态管理和监控你所感兴趣的资源,例如应用程序、设备、服务、JVM等。JMX能够支持通过本地和远程访问的方式,来实现对相关资源的管理和监控。JMX只是对应用程序管理的扩展,而非必选,那么,如果我们选择为系统实现JMX管理功能,能够带来哪些好处呢?
第一、基于JMX来管理现有的Java应用程序,可以非常容易的基于Java技术实现,而无需更大的投入;
第二、JMX定义了一种规范和一组标准API,业界已经将JMX技术纳入到自己的产品中来,例如JBoss、Weblogic等;
第三、JMX具有一套标准的架构,使得在管理方面具备动态性、灵活性、可扩展性和稳定性;
第四、JMX可以非常容易地与其他管理方案进行整合,如通过浏览器来访问代理服务器(MBean Server)。
下面,我们看一下,JMX的技术架构,可以分为三层:
1、设备层
这一层定义了需要管理的资源,如应用程序、设备、服务、网络,将这些资源以Java对象的形式,以MBean的方式暴露管理接口,例如标准MBean,通过定义名称含有MBean后缀的管理接口,在实现这些接口时与待管理的资源相关联,之后将这些Java对象注册到代理服务器(MBean Server)来实现远程管理和监控。
例如,我们定义了一个标准MBean管理接口(其它MBean可以参考相关文档):
MBean的实现示例如下所示:
可以看到,管理接口中暴露了4个方法,可以查看但不能修改id,可以查看并修改name,可以调用show方法。
需要注意的是,对于标准MBean,如果MBean管理接口定义为xxxMBean,则实现一定为xxx,否则就无法通过MBean Server查找到对应的资源。
2、代理层
代理层为待管理对象(如实现标准MBean管理接口的Java对象)提供了一个容器,其中只有满足要求并注册到容器中对象才能实现JMX管理。代理层最主要的组件就是MBean Server,它在我们的应用系统中充当一个管理功能的代理。