JMX入门
James Shen
简介
Java Management extensions(JMX)是SUN公司提出的一套管理框架。它定义了完整的框架体系、设计模式、API接口、基于网络的管理和监控服务等,通过这些可以对你的Java程序进行管理控制。
JMX管理框架的优势
让你的程序基于JMX管理框架有以下优势:
n 使你的Java应用程序只作最小的改动就能够被管理
JMX管理框架依赖于核心的管理服务器。所谓管理服务器类似于代理,我们通过它去管理所有的受控对象。这样我们能够作最小的改动就使程序变得可管理。你的Java应用程序甚至可以简单到只增加几个方法然后作为可管理的对象(MBean)注册到JMX管理服务器上。这样你就可以利用JMX管理框架提供的标准接口去管理你的Java应用程序(例如你的EJB一样可以被JMX管理)。
n 提供了一种可伸缩的管理框架
每一个JMX代理服务都是一个独立的模块,它可以根据需要动态的加载、卸载。这种基于组件化的耦合方式使JMX解决方案更加具有弹性,不论程序规模是大是小都可以自由切换。JMX管理框架提供了一组核心服务。所有这些服务都可以被动态加卸载。
n 整合现有的管理解决方案
JMX智能代理使你的应用程序能够通过HTTP、SNMP、WBEM等协议来被管理。并且它的API接口已经成为公开标准,任何其他第三方厂商都可以兼容JMX管理框架。
n 可以充分利用已经存在的标准Java技术
任何时候JMX管理框架都可以参考现有的 Java 技术,例如 Java Naming and Directory Interface™(JNDI)、 Java Database Connectivity(JDBC™)、Java Transaction Services(JTS)等
n 能够适应未来的管理概念
JMX 管理框架提供了动态、可伸缩的解决方案,通过 Java 技术可以兼容各种不同技术。例如:JMX 解决方案能够利用 Jini™ network、Universal Plug’n’Play(Upnp)、Service Location Protocol(SLP)等技术。SUN公司提供了一个范例:Jini™ network 技术在网络上提供各种服务,并通过 JMX 框架来进行统一管理。这种两种技术的结合被称作 Sun Spontaneous Management™ Software
n 只定义了管理框架必须的接口
JMX 框架并不是为一个分布式系统设计。但是它提供了许多服务来适应分布式环境
JMX管理框架结构
JMX 管理框架为多层结构:
n Instrumentation level(工具层)
n Agent level(代理层)
n Distributed service level(分布服务层)
n Additional management protocol API(其他管理协议 API)
n 工具层(Instrumentation Level)
工具层提供了可管理资源的规范。所谓可管理资源可以是一个 Java 应用程序、一种实现的服务、一种设备或其他。它依赖于 Java 技术或者被 Java 技术包装起来,并且它就像一种工具(Instrumentation)可以被JMX 管理框架来管理、控制。这种可管理的资源可以通过一个或多个 MBean(可管理的 Beans)提供,它们可以是标准或者动态的。标准 Mbeans 是一组遵循特定设计模式的 Java 对象(来源于 JavaBeans™ 组件模型),动态 Mbeans 通过实现特定的接口能够在运行期获得更多的灵活性。
工具层的可管理资源通过代理层去管理,但是在编写 MBeans 时候不需要去关心代理层的任何细节。MBeans 希望能够简单、容易的实现,这样开发者能使他开发的产品具有可管理性却不需要关注复杂的管理解决方案。已经存在的产品也很容易转换成标准或动态的 MBeans 资源,因此能以最低的成本使已存在资源变得可管理。
另外,工具层还提供了特别的消息(Notification)机制。这种机制允许 MBeans 发送异步消息到其他层的组件,实现了通讯功能。因为工具层完全由设计模式和各种接口组成,所以参考实现(RI)仅仅提供了范例来实现各种 MBeans 和异步消息机制。因此兼容性测试(CTS)也仅仅关注各种设计模式和接口是否与 JMX 规格说明书一致。可管理资源可以被 JMX 定义的代理层自动管理,同样也可以通过 MBean 设计和接口直接管理而不通过代理层。
n 代理层(Agent Level)
代理层提供了 JMX 规格说明中定义的代理。通过它能够直接管理、监控应用程序的所有资源。代理通常被安装在同一台机器上来管理所有资源,实际上在不同的机器一样可以管理监控。代理层构筑在工具层之上,它定义了一套标准的代理去管理所有资源。标准的 JMX 代理由 MBean 服务器和一组被管理的 MBean 组成。