Java理论与实践:用JMX检测应用程序 - 编程入门网
Java理论与实践:用JMX检测应用程序时间:2010-12-20 IBM Brian Goetz有多少次您曾经注视着运行中的应用程序,问自己:“它到底在做什么?为 什么用了这么长时间呢?” 在这些时刻,您可能会想如果自己在应用程序中构 建了更多的监视功能就好了。例如,在服务器应用程序中,能够查看排队等候处 理的任务的数量和类型、当前正在处理的任务、过去一分钟或一小时内的吞吐量 统计、平均任务处理时间等。这些统计值容易搜集,但是在需要数据的时候,如 果没有非侵入性的数据检索机制,那么这些值就不太有用。 可以用许多方式导出操作性数据——可以把周期性统计快照写入日志文件、 创建 Swing GUI、使用内嵌的 HTTP 服务器在 Web 页面上显示统计值或者发布 可以用来查询应用程序的 Web 服务。但是在缺少监视和数据发布基础设施的情 况下,多数应用程序开发人员都做不到这些,因此造成对应用程序工作情况的了 解要比预期的少很多。 JMX 在 Java 5.0 中,类库和和 JVM 提供了一种全面的管理和监视基础设施—— JMX。JMX 是一种用来提供可以远程访问的管理接口的标准措施,也是一种向应 用程序添加灵活且强大的管理接口的简易方式。被称作受管 bean(MBean)的 JMX 组件,是提供与实体的管理有关的访问器和业务方法的 JavaBean。每个受 管的实体(可能是整个应用程序或应用程序中的服务)实例化一个 MBean 并用 可读懂的名称注册它。支持 JMX 的应用程序依赖于 MBeanServer,它充当 MBean 的容器,提供远程访问、命名空间管理和安全服务。在客户端,jconsole 工具可以充当统一的 JMX 客户机。结合两者,对 JMX 的平台支持极大地降低了 使应用程序支持外部管理接口所需的工作和努力。 除了提供 MBeanServer 实现,Java SE 5.0 还提供 JVM 以更方便地了解内 存管理、类装入、活动线程、日志和平台配置的状态。多数平台服务的监视和管 理在默认情况下都是开启的(性能影响最小),所以只需要连接应用程序与 JMX 客户机即可。图 1 给出了 jconsole JMX 客户机(JDK 的一部分) ,它显示了 其中一个内存管理视图——一段时间内的堆使用情况。Perform GC 按钮则证明 了 JMX 可以提供 除了查看操作统计值之外的初始化操作的功能。 图 1. 用 jconsole 查看堆使用情况 传输和安全性 JMX 指定了在 MBeanServer 和 JMX 客户之间通信所使用的协议,协议可以 在各种传输机制上运行。可以使用针对本地连接的内置传输,及通过 RMI、 socket 或 SSL 的远程传输(可以通过 JMX Connector API 创建新的传输)。 认证是由传输执行的;本地传输允许用相同的用户 ID 连接到运行在本地系统上 的 JVM;远程传输可以用口令或证书进行认证。本地传输在 Java 6 下默认就是 启用的。要在 Java 5.0 下启用它,需要在 JVM 启动时定义系统属性 com.sun.management.jmxremote。“Monitoring and Management using JMX” 这份文档(请参阅参考资料)描述了启用和配置传输的配置步骤。 检测 Web 服务器 检测应用程序来使用 JMX 很容易。像其他许多远程调用框架(RMI、EJB 和 JAX-RPC)一样,JMX 也是基于接口的。要创建管理服务,需要创建指定管理方 法的 MBean 接口。然后可以创建一个 MBean 来实现此接口、实例化它及把它注 册到 MBeanServer。 清单 1 显示了网络服务(例如 Web 服务器)的 MBean 接口。它提供了检索 配置信息(例如端口号)和操作性信息(例如服务是否启动)的 getter。它还 包含查看和修改可配置参数(例如当前日志级别)的 getter 和 setter,还有 调用管理操作(例如 start() 和 stop())的方法。 清单 1. 某个 Web 服务器的 MBean 接口
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |