我刚刚参加了一个JavaOne会议:“Designing Manageable Java EE Platform-Based Applications with the JMX API”(使用JMX API设计基于Java EE平台的可管理应用程序),演讲者是来自Interface 21公司的Rob Harrop,以及来自BEA的Akbar Ansari和Sandeep Shrivastava。该演讲提供了对JMX的相当全面的介绍——在Java SE和Java EE两方面。
JMX API适用于什么地方呢?他们认为可以分为3个级别:在JVM软件层,允许对JVM资源进行低级管理;在Java EE层,允许管理和监控基础架构组件;最后在应用层,必须编写一些管理特定于业务的组件的代码,比如监控长期运行的进程,或者订单处理逻辑等。
可以通过使用-Dcom.sun.management.jmxremote标志启动JVM来找出JVM层的JMX统计信息——显然在Java SE 6中不需要这么做。然后只需启动JVM附带的标准JMX控制台,JConsole。他们指出了该控制台的一个重要用途:找出正在运行的JVM所使用的精确类路径。
让我感兴趣的是会议期间的调查。他们询问有多少人使用JConsole或诸如此类的东西。在至少有一百五十人的会场中,只有10人举手。也许在场的每个人都是来学习的?我很怀疑。
最后JSR 77 (J2EE Management)引起了我的注意,它为Java EE定义了一个管理模型。它旨在允许以一种标准化方式访问“Java EE”类型对象的JMX监控/性能统计信息——我猜测它在组件上使用了一种预期可以从应用服务器中获得的标准命名结构,比如针对数据源中的JDBC驱动程序的j2eeType=JDBCDriver。我不太清楚有多少应用服务器实现了这一特性,但是似乎它为可用于所有应用服务器的标准化管理工具(包括明显的本地扩展增强)铺平了道路。虽然这么说,但是演讲者还是提到该规范并没有定义全部细节,而且不同的应用服务器实现之间的区别也非常大。
如果您对这方面的内容感兴趣,可以看看Marcus以前写的一篇关于JRockit中的JMX的文章(中文版)。
技术标签:javaone、javaone 2006、jrockit、jvm、jmx
原文出处:http://dev2dev.bea.com/blog/jonmountjoy/archive/2006/05/jmx_and_jconsol.html