简介
JMX定义了一种用于让应用程序公开管理功能的标准方法,一种叫做检测的过程,和一个标准的管理中间层,JMX代理,它可以作为管理组件的单点入口。JMX旨在简化和标准化企业Java应用程序运行时的管理基础架构的Java Community Process (JCP)规范。
JMX 的体系结构和操作模型旨在满足下列目标:
- 可伸缩性:适应从管理少数设备或服务到管理因特网时代的企业可能拥有的数万个可管理端点的能力
- 旧系统集成和兼容性:与现有 NMS 或 EMS 解决方案以及与可能不支持 JMX 的旧的可管理端点协作的能力
- 低成本实现:无需大量设计和编码工作,即可轻松地将 JMX 兼容性设计到现有软件产品和设备中
在 JMX 体系结构中,采用三级分而治之的体系结构化方法来降低可伸缩网络管理的复杂性。 图 6 说明了这三个松散耦合的层。它们是:
- 工具层:在本层,可管理端点(设备、软件服务等)可通过 JMX 指定的接口访问。这是通过创建公开可配置属性、可访问操作和事件的 Java 对象实现的。这些对象称为 ManagedBean(简称 MBean)。在规范中将可通过这些对象管理的端点称为 JMX 可管理的资源。通过提供 Java MBean 封装器,可以轻松地将旧的非 JMX 设备和服务器(如 SNMP 兼容的设备或子网)“调整”成 JMX 可管理的资源。这一层上的 JMX 可管理资源可以完全独立于任何其它 JMX 体系结构层上的对象进行设计。
- 代理层:在本层中,公开了 JMX 代理的内部体系结构。 JMX 代理是软件组件,它向远程管理组件公开一组标准化代理服务并通过 JMX 可管理资源的 MBean 接口直接控制这些资源。实际上,在 JMX 代理内可通过能够动态地装入和卸装 MBean 的 MBean 服务器来管理 MBean。访问 MBean 服务器的接口由 JMX 指定。大型 EMS 系统中的增值服务(如本地化智能监控和自动化响应),可在该层的 JMX 体系结构中实现。可以独立于其它层的对象设计这一层的代理。代理通过连接器或协议适配器与管理应用程序通信。但是,用于这些组件的规范仍处于开发过程中。
- 分布式服务层:在本层中,目标是指定为 JMX Manager 组件提供的接口。JMX Manager 可以访问代理或代理组来管理由代理公开的 JMX 可管理的资源。实质上,这些是 EMS 应用程序开发人员进行编程所依赖的接口。Manager 组件可以是 EMS 应用程序或管理多个代理和相关资源的中间智能层。
所有这三个层次都围绕着JMX模型中的核心概念 — 托管bean,或者简称MBean。应用程序是通过托管bean 进行检测的。托管bean就是一个具体的Java类,它遵循确定的规则,使JMX代理(或者其他MBean感知的代理)可以以一种统一的方式管理该类的对象。托管bean提供三种检测类型:
- 访问信息,通过已公开的属性(可读,可写,或者二者兼而有之)。
- 反应行为,通过任意的已发布操作。
- 前摄行为,通过给已注册监听器的通知。
JMX的用途
- 监控应用程序运行状态,资源使用情况,用户活动摘要,性能统计信息
- 管理程序组件的生命周期
- 资源动态配置
JMX Connectors
- RMI Connector
- JMXMP Connector (JMX Message Protocol Connector)
RMI Connector支持RMI Transports , Java Remote Method Protocol (JRMP) 和 Inter-Object Request Broker Protocol (IIOP)
使用技巧
使用RMI Connector的时候需要对端口进行注册,通常是在命令行中运行rmiregistry 9999。
这里也可直接通过代码注册RMI端口,代码如下:
LocateRegistry.createRegistry(8999);