JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。
JMX致力于解决分布式系统管理的问题,比如网站的监控和软件的参数配置等,因此,能够适合于各种不同的环境是非常重要的。
管理对象是JMX应用程序的核心。JMX是通过RMI(Remote Method Invocation)进行通信。RMI使得一个Java虚拟机(JVM)上运行的程序可以调用远程服务器上另一个JVM总的对象。借助于JMX可以如此简单的管理程序,无需为管理程序来开发界面。已经有通用的JMX管理软件,或者用SUN提供的WEB界面来管理。
JMX这一轻型的管理基础结构,价值在于对被管理资源的服务实现了抽象,提供了低层的基本类集合,开发人员在保证大多数的公共管理类的完整性和一致性的前提下,进行扩展以满足特定网络管理应用的需要。
JMX注重于构造管理工具的软件框架,并尽量采用已成熟的技术。
JMX体系被分成三个层次
- 表现层
- 代理层
- 分布式服务层
表现层
表现层定义的是JMX可管理资源所在的层。
这些已管理的资源可以编写或封装为MBean。
MBean分为四种类型: 标准、动态、开放、模型
代理层
定义的是MBean向应用程序施加管理的层。包括MBean服务器和代理服务的定义。还至少包括一个协议适配器或连接器。 代理的组成: 。一个MBean服务器 。要管理的MBean 。作为MBean实现的代理服务 。至少一个协议适配器
MBean
在JMX中,最小的可管理单元是MBean。 MBean不是一个真正的接口和类,而是必须准循的设计模式以确保资源是一个兼容的MBean。
MBean的激活方法:
invoke()方法是管理应用程序用于激活MBean的方法的手段。 invoke()方法有三个参数,分别是方法的名称、表示属性的对象数组和描述方法签名的一个字符串数组。它与使用Java Reflection Api 激活方法的方式类似。
Notification(通知)模型:
MBean的通知模型类似与Java事件的监听器模型。 MBean或管理应用程序可以作为MBean事件的监听器注册。 通知支持由两个基本的概念组成,即广播器和监听器。
MBean服务器
MBean服务器用于注册可管理的MBean。 所有对MBean的请求或查询都是通过MBean服务器实施的。
代理服务
代理服务是一些特殊的函数,代理把这些服务提供给MBean,这些代理服务独立于任何MBean。
分布式服务层
包含协议适配器和连接器两种类型的组件,通过它们连接到外部的应用,如RMI管理应用、基于浏览器的管理控制等 协议适配器和连接器 协议适配器是代理与管理客户通信的手段,每个通信的协议都可能不同。 它们都是管理客户与MBean交互的方式。