该层定义了如何实现JMX管理资源的规范。一个JMX管理资源可以是一个Java应用、一个服务或一个设备,它们可以用Java开发,或者至少能用Java进行包装,并且能被置入JMX框架中,从而成为JMX的一个管理构件(Managed Bean),简称MBean。管理构件可以是标准的,也可以是动态的,标准的管理构件遵从JavaBeans构件的设计模式;动态的管理构件遵从特定的接口,提供了更大的灵活性。
该层还定义了通知机制以及实现管理构件的辅助元数据类。
管理构件(MBean)
在JMX规范中,管理构件定义如下:它是一个能代表管理资源的Java对象,遵从一定的设计模式,还需实现该规范定义的特定的接口。该定义了保证了所有的管理构件以一种标准的方式来表示被管理资源。
管理接口就是被管理资源暴露出的一些信息,通过对这些信息的修改就能控制被管理资源。一个管理构件的管理接口包括:
1)能被接触的属性值;
2)能够执行的操作;
3)能发出的通知事件;
4)管理构件的构建器。
管理构件通过公共的方法以及遵从特定的设计模式封装了属性和操作,以便暴露给管理应用程序。例如,一个只读属性在管理构件中只有Get方法,既有Get又有Set方法表示是一个可读写的属性。
其余的JMX的构件,例如JMX代理提供的各种服务,也是作为一个管理构件注册到代理中才能提供相应的服务。
JMX对管理构件的存储位置没有任何限制,管理构件可以存储在运行JMX代理的Java虚拟机的类路径的任何位置,也可以从网络上的任何位置导入。
JMX定义了四种管理构件:标准、动态、开放和模型管理构件。每一种管理构件可以根据不同的环境需要进行制定。
1.标准管理构件
标准管理构件的设计和实现是最简单的,它们的管理接口通过方法名来描述。标准管理构件的实现依靠一组命名规则,称之为设计模式。这些命名规则定义了属性和操作。检查标准管理构件接口和应用设计模式的过程被称为内省(Introspection)[22]。JMX代理通过内省来查看每一个注册在MBean 服务器上的管理构件的方法和超类,看它是否遵从一定设计模式,决定它是否代表了一个管理构件,并辨认出它的属性和操作。
2.动态管理构件
动态管理构件提供了更大的灵活性,它可以在运行期暴露自己的管理接口。它的实现是通过实现一个特定的接口DynamicMBean(如下图)。
JMX代理通过getMBeanInfo方法来获取该动态管理构件暴露的管理接口,该方法返回的对象是MbeanInfo类的实例,包含了属性和操作的签名。由于该方法的调用是发生在动态管理构件向MBean服务器注册以后,因此管理接口是在运行期获取的。不同于标准管理构件,JMX代理不需要通过内省机制来确定动态管理构件的管理接口。由于DynamicMBean的接口是不变的,因此可以屏蔽实现细节。由于这种在运行期获取管理接口的特性,动态管理构件提供了更大的灵活性。
3.开放管理构件
开放管理构件是一种专门化的动态管理构件,其中所有的与该管理构件相关的参数、返回类型和属性都围绕一组预定义的数据类型(String、Integer、Float 等)来建立,并且通过一组特定的接口来进行自我描述。JMX代理通过获得一个OpenMBeanInfo对象来获取开放管理构件的管理接口,OpenMBeanInfo是MbeanInfo的子类。
4.模型管理构件
模型管理构件也是一种专门化的动态管理构件。它是预制的、通用的和动态的 MBean 类,已经包含了所有必要缺省行为的实现,并允许在运行时添加或覆盖需要定制的那些实现。JMX规范规定该类必须实现为javax.management.modelmbean.RequiredModelMBean,管理者要做的就是实例化该类,并配置该构件的默认行为并注册到JMX代理中,即可实现对资源的管理。JMX代理通过获得一个ModelMBeanInfo对象来获取管理接口。
模型管理构件具有以下新的特点[23]:
1)持久性
定义了持久机制,可以利用Java的序列化或JDBC来存储模型MBean的状态。
2)通知和日志功能
能记录每一个发出的通知,并能自动发出属性变化通知。
3)属性值缓存
具有缓存属性值的能力。
通知模型
一个管理构件提供的管理接口允许代理对其管理资源进行控制和配置。然而,对管理复杂的分布式系统来说,这些接口只是提供了一部分功能。通常,管理应用程序需要对状态变化或者当特别情况发生变化时作出反映。
为此,JMX定义了通知模型。通知模型仅仅涉及了在同一个JMX代理中的管理构件之间的事件传播。JMX通知模型依靠以下几个部分:
1)Notification,一个通用的事件类型,该类标识事件的类型,可以被直接使用,也可以根据传递的事件的需要而被扩展。
2)NotificationListener接口,接受通知的对象需实现此接口。
3)NotificationFilter接口,作为通知过滤器的对象需实现此接口,为通知监听者提供了一个过滤通知的过滤器。
4)NotificationBroadcaster接口,通知发送者需实现此接口,该接口允许希望得到通知的监听者注册。
发送一个通用类型的通知,任何一个监听者都会得到该通知。因此,监听者需提供过滤器来选择所需要接受的通知。
任何类型的管理构件,标准的或动态的,都可以作为一个通知发送者,也可以作为一个通知监听者,或两者都是。
辅助元数据类
辅助元数据类用来描述管理构件。辅助元数据类不仅被用来内省标准管理构件,也被动态管理构件用来进行自我描述。这些类根据属性、操作、构建器和通告描述了管理接口。JMX代理通过这些元数据类管理所有管理构件,而不管这些管理构件的类型。
部分辅助元类如下:
1)MBeanInfo--包含了属性、操作、构建器和通知的信息。
2)MBeanFeatureInfo--为下面类的超类。
3)MBeanAttributeInfo--用来描述管理构件中的属性。
4)MBeanConstructorInfo--用来描述管理构件中的构建器。
5)MBeanOperationInfo--用来描述管理构件中的操作。
6)MBeanParameterInfo--用来描述管理构件操作或构建器的参数。
7)MBeanNotificationInfo--用来描述管理构件发出的通知。
分享到:
相关推荐
JMX规范自提出以来,已经成为Java平台的一部分,并且随着版本的更新不断演进,JMX 1.4正是这样一个在技术界广泛使用并不断完善的规范。 JMX架构的核心思想在于将被管理的资源抽象为模型化组件(Managed Beans,简称...
1. **设备层**:这是 JMX 架构中最底层的部分,负责处理特定设备上的管理对象(MBeans)。该层支持动态管理和监控 MBeans,同时也支持通知机制,以便在特定事件发生时向其他层发送消息。 2. **代理层**:位于设备...
- **应用程序开发者**:希望遵循JMX规范管理硬件设备、应用程序和接口的开发人员。 #### 八、准备工作 要深入理解JMX 1.4规范,读者应具备以下条件: - 对Java编程语言有良好的掌握能力。 - 熟悉Java环境开发。 - ...
1. **设备层(Instrumentation Level)**:在这个层次,JMX 定义了管理对象,即 MBeans(Managed Beans)。MBeans 是代表可管理资源的实体,它们可以是系统参数、服务状态或者任何需要监控的对象。MBeans 通过注册到...
通过三层架构——设备层、代理层和分布式服务层,JMX能够处理从简单的设备管理到大规模企业环境的复杂网络管理需求。 **设备层** 设备层是JMX架构的基础,主要负责将资源封装成可管理资源,即MBean。MBean是对任何...
1. 设备层(Instrumentation Level):定义了管理对象的信息模型,包括MBeans和通知机制。MBeans需注册到MBean服务器以便管理。 2. 代理层(Agent Level):包含MBean服务器,所有管理对象在此注册并透过协议适配器...
1. **设备层** (Instrumentation Level):涉及到资源的管理和展示。 2. **代理层** (Agent Level):负责处理本地或远程客户端的请求,并且管理MBeans。 3. **分布式服务层** (Distributed Services Level):支持远程...
JMX规范通过提供丰富的API以及服务,可以很方便地构建网络管理系统。 JMX网络管理系统的核心是MBean(Managed Beans)组件。MBean是Java管理扩展中的管理对象,它们遵循一定规范,这些规范定义了MBean能提供的操作...
装配层负责定义可管理资源的规范,通过将应用程序、服务组件或设备等封装为ManagedBean(MBean),使其具备可管理性。MBean可以是标准的或是动态的,分别对应于预定义接口和运行时动态获取特性的两种情况。同时,...
智慧政务云数据中心技术路线选型方案的知识点涵盖了智慧政务云数据中心的建设原则、建设思路、标准规范体系设计、技术路线选择、设备选型及价格参考等多个方面。具体内容包括: 一、项目设计原则: 1. 统一建设:...
6. **JMX层**:Java管理扩展,用于管理和监控应用组件。 7. **其他组件**:如RMI(远程方法调用)、Jini(服务发现和交互框架)等。 ### J2EE核心组件与API 1. **JDBC**:提供与多种数据库交互的接口,确保跨平台的...
#### 二、JMX架构 JMX的核心在于其强大的架构设计,它分为两个主要层次:**仪器层(Instrumentation Level)** 和 **代理层(Agent Level)**。 ##### 2.1 仪器层 这个层次关注于如何将被管理的对象转换为可管理的...
1. 客户端层:这是用户与应用交互的部分,可以是Web浏览器、富客户端应用或移动设备应用。在J2EE中,开发者可以使用JavaFX、Swing或Java Applets来创建客户端应用。 2. Web层:此层处理HTTP请求,主要由Servlets、...
此外,系统的实施还涉及到数据库设计、接口规范、安全性设计等多个方面。在实际应用中,还需要考虑与其他网络管理系统、设备厂商的API集成,以实现更高效的网络运营。总的来说,本文提出的无线网络管理系统方案,...
UAP-NC的体系结构分为三层:系统框架层、技术框架层和应用框架层,以及一套开发和管理工具集(Workshop)。 - **系统框架层**:包括基础软件,如操作系统、数据库和J2EE应用服务器,为整个系统提供运行环境。 ...
**J2EE 1.3.1 API** 和 **J2EE 1.4 API** 是Java企业版(Java Enterprise Edition)的历史版本的官方API文档,它们分别代表了J2EE平台在2003年和2005年的技术规范。J2EE是Java平台上用于构建分布式、多层的企业级...