技术开发 频道

从黑箱到企业: 管理,JMX 1.1 样式

  JMX 代理内幕

  图 7 揭示了典型 JMX 代理的内部构造。请注意,代理内部的四种主要组件是 MBean 服务器、一组代理服务、连接器和协议适配器以及定制代理逻辑。

  MBean 服务器

  MBean 服务器是代理内部的核心组件。所有 MBean 在可以通过远程应用程序访问之前都必须向 MBean 服务器注册。当使用 MBean 服务器时,通过唯一的对象名对已注册的 MBean 进行寻址。远程管理器应用程序(或分布式服务)只能通过 MBean 的管理接口(已公开的属性、操作和事件)发现和访问 MBean。

  代理服务

  代理还提供了一组代理服务,定制代理逻辑可以使用它们在 MBean 服务器中对已注册的 MBean 进行操作。为了符合 JMX 1.1,这些服务是必需的 ―所有代理都必须提供它们。有趣的是,可以用 MBean 本身的形式实现这些服务。以 MBean 的形式实现服务有几个优点:

  可以通过 Manager 组件或 EMS 远程访问该服务的操作。

  通过从远程管理器应用程序进行访问,EMS 可以远程地管理服务本身。

  可以通过下载 MBean 在运行时动态地执行服务逻辑的更新。

  表 3 显示了 JMX 1.1 规范中定义的一组代理服务。

  表 3. JMX 1.1 所需的代理服务

m-let 或管理 Applet 服务支持跨网络从 URL 位置装入动态类(请参阅 javax.management.loading.MLetMBean 和相关联的类/接口)。
监视器服务将代价高昂的远程轮询操作转换成本地操作;监控 MBean 属性的特定更改并在观察到更改时发送事件。
计时器服务经历了指定的时间量后发送事件,或以指定时间间隔定期发送事件(请参阅 javax.management.monitor.MonitorMBean 和相关的类/接口)。
关系服务支持 MBean 之间的关系定义,并强制关系的完整性(请参阅 javax.management.relation.RelationServiceMBean 和相关的类/接口)。
  增值代理逻辑

  增值代理逻辑通常是编写的代码。它是能够提供本地化智能的定制代理逻辑,用来管理向该代理注册的 JMX 可管理资源。例如,如果我们有两个冗余的应用程序服务器群集,就可以创建定制代理,监控负载级别并且动态地将入站请求重定向到不同的群集 ― 通过对已注册的服务器的 MBean 进行操作。通常,NMS 的供应商也会提供定制逻辑。一旦分布式服务的规范得以充实,可以预言,某种特定的定制代理逻辑将可以与定制远程 JMX 管理器组件良好地协作,以提供更高级别的网络管理功能。

  连接器和协议适配器

  代理不与分布式服务、NMS 或其它管理应用程序直接通信。而是使用连接器和协议适配器。这种体系结构与 J2EE 连接器体系结构(J2EE Connector Architecture)是一致的(请参阅 参考资料)。协议适配器是一种软件组件,它通过标准化协议(如 HTTP 和 SNMP)提供对代理管理的资源的访问。

  连接器是一种专用软件组件,它提供了到代理和/或该代理上的受管资源的远程接口(通常使用诸如 CORBA 或 RMI 这样的远程过程调用技术来完成 ― 为了安全性通常通过 SSL)。当代理有多个活动的连接器和协议时,可以通过多个异构的应用程序或 NMS 同步地访问受管资源。可以用协议适配器来提供对现有的和已建立的 NMS 的向后兼容性。例如,我们可以为支持这个标准的 NMS 创建 通用信息模型/基于 Web 的企业管理(CIM/WEBM)适配器,或者可以创建 电信管理网络(TMN)协议适配器来启用由 JMX 代理管理的电信资源上的 操作、管理和维护(OAM)。JMX 连接器和协议适配器的精确规范属于正在同时开发的规范的范畴。

  JMX 1.1 不断增加的应用程序支持

  构仅完整定义了工具和代理层,但它已经在基于 Java 的企业技术开发人员中赢得了广泛的支持。

  J2EE 1.4 和 JMX

  2002 年 8 月 18 日提议的 J2EE v1.4 最终草案版本详细描述了基于 JMX 的工具将如何成为 J2EE Web 容器(JSP/Servlet 引擎)、EJB 容器和应用程序客户机容器的标准部分。这是很自然的发展,因为基于 J2EE 服务器的广泛部署正使得可管理性成为明确的需求。(正如您可以想象的,在部署了数百台服务器的大型站点中,手工或专门配置、管理和监控几乎是不可能的。)

  迄今为止,商业服务器产品已经通过专用方式或特殊添加物(使产品与现有 NMS 产品兼容)来支持可管理性。J2EE v1.4 规范中作为管理基础的 JMX 标准化,对于确保来自不同供应商的服务器产品普遍地与 NMS 兼容(并可由 NMS 管理)大有帮助。

  实现的案例研究:Apache Jakarta Tomcat 4.1.x

  Tomcat 4.1.x 服务器的最新 beta 测试版与 J2EE v1.4 规范保持一致,它已经集成了 JMX 工具。。大多数 Tomcat 工具集中于配置组件,这些组件对应于 Tomcat 的 Catalina 引擎中的运行时对象。原本只能通过 conf 目录中的 server.xml 和 web.xml 文件更改的配置组件(如 <Engine>、<Host>、<Server>、<Service>、<Connector>、<Context> 和 <Realm>),现在都可以通过 JMX MBean 实现使用。

  如果您研究一下 org.apache.catalina.mbeans 包(在源代码分发版或 API Javadoc 中),就会发现所有公开 Tomcat 配置组件的 JMX 工具 MBean 类。一些示例包括利用<Context> 配置组件的 org.apache.catalina.mbeans.StandardContextMBean ,而 org.apache.catalina.mbeans.MemoryUserDatabaseMBean 利用<MemoryUserdatabase>组件。如果您研究实际的源代码,您将发现 Tomcat 4 工具广泛利用了 JMX 实现提供的模型 MBean 模板。

  目前,Tomcat 4.1.x 使用 MX4J JMX 实现(一个开放源码许可的 JMX 实现),而不是 Sun 的参考 JMX 实现。但是,两个实现都是完全兼容 JMX 1.1 的。

  广泛的 Tomcat 工具的一个立杆见影的好处就是可以很容易地创建一个基于 Web 的 GUI 管理应用程序。Tomcat 4.1.x 提供了一个称为 admin 的应用程序。应用程序本身是用 Struts 应用程序框架和 JSP 技术创建的。它通过本地 JMX 代理的 MBean 服务器访问所有的配置组件(与 server.xml 文件中定义的那些相同)。在 Tomcat 环境中,JMX 代理是由 org.apache.catalina.mbeans.ServerLifeCycleListener 类创建的。该类是一个在 Tomcat 启动和关闭时会调用的 LifeCycleListener 。

  要尝试这个基于 JMX 的 admin 实用程序,首先您必须编辑 Tomcat 分发版的 conf 目录下的 tomcat-users.xml 文件。确保您为 tomcat 用户添加了 admin 角色:

1 <user username="tomcat" password="tomcat" roles="tomcat,admin"/>
2

   组件将使用该文件在运行时验证访问,要运行这个实用程序,用户必须具有 admin 角色。接下来,启动 Tomcat 4.1.x。

  打开浏览器并输入 URL:

1 http://localhost:8080/admin/
2

  在登录页面,输入:

1 Username: tomcat
2 Password: tomcat
3

  现在,请研究 admin 实用程序并观察 JMX MBean 是如何支持实时显示和修改 Catalina 配置组件值的。例如,图 8 显示了 配置组件的属性的配置页面:

  图 8. 基于 JMX 1.1 的 Tomcat 4 GUI admin 实用程序

  当然,除了基于 Web 的 admin 应用程序之外,Tomcat 的工具支持由其它代理和 EMS 来管理它。

  结束语

  通过利用 Java 平台和谨慎的设计,JMX 达到了其设计目标:可伸缩性、低实现成本和与现有技术的兼容性。在下一篇文章中,我们将使用参考 JMX 1.1 代码,实现我们自己的标准 MBean 和动态 MBean,利用所需的模型 MBean 作为快速工具,并用 JMX 代理进行实验。

0
相关文章