快速业务通道

Java理论与实践:用JMX检测应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
public int getPort();    public String getLogLevel();    public void setLogLevel(String level);    public boolean isStarted();    public void stop();    public void start(); }

实现 MBean 类通常非常直接明了,因为 MBean 接口要反映现有实体或服务 的属性和管理操作。例如,MBean 中的 getLogLevel() 和 setLogLevel() 方法 会直接转给被 Web 服务器使用的 Logger 上的 getLevel() 和 setLevel() 方 法。JMX 做了一些命名限制。例如,MBean 接口名称必须以 MBean 结尾, FooMBean 接口的 MBean 类必须叫作 Foo。(可以用更高级的 JMX 特性——动 态 MBean 来去除这个限制。)把 MBean 注册到默认的 MBeanServer 也很容易 ,如清单 2 所示:

清单 2. 用内置的 JMX 实现注册 MBean

public class WebServer implements WebServerMBean { ... }   ...   WebServer ws = new WebServer(...);   MBeanServer server = ManagementFactory.getPlatformMBeanServer ();   server.registerMBean(ws, new ObjectName ("myapp:type=webserver,name=Port 8080"));

Java理论与实践:用JMX检测应用程序(2)

时间:2010-12-20 IBM Brian Goetz

传递给 registerMBean() 的 ObjectName 标识了受管实体。因为预见到指定 应用程序可能包含许多受管实体,所以名称包含域(清单 2 中的 “myapp”) 和许多标识域中的受管资源的键-值对。“name” 和 “type” 这两个键是常用 的,在使用的时候,name 应当在域中所有的同类 MBean 中能够唯一地标识受管 实体。也可以指定其他键-值对,而且 JMX API 还包含进行对象名称通配匹配的 工具。

创建并注册了 MBean 之后,立即就可以把 jconsole 指向应用程序(在命令 行输入 jconsole)并在 “MBeans” 视图中查看它的管理属性和操作。图 2 显 示了 jconsole 中针对新 MBean 的 Attributes 标签,图 3 显示了 Operations 标签。使用反射,JMX 可以指出哪个属性是只读的(Started、Port ),哪个属性是可读写的(LogLevel),而且 jconsole 允许修改读写属性。如 果读写属性的 setter 抛出异常(例如 IllegalArgumentException),JMX 就 把异常报告给客户机。

图 2. jconsole 中 MBean 的 Attributes 标签

Java理论与实践:用JMX检测应用程序 - 编程入门网

图 3. jconsole 中 MBean 的 Operations 标签

Java理论与实践:用JMX检测应用程序 - 编程入门网

数据类型

MBean 中的访问器和操作能够用任何其签名形式的原语类型,以及 String、 Date 和其他标准库类。也可以使用这些允许的类型的数组和集合。MBean 方法 也可以使用其他可以序列化的数据类型,但是这样做会造成互操作性问题,因为 类文件也必须对 JMX 客户机可用。(如果使用 RMI 传输,可以使用 RMI 的自 动类下载特性完成这项任务。)如果想在管理接口中使用结构化数据类型,还想 避免与类可用性相关的互操作性问题,可以使用 JMX 的开放 MBean 特性来表达 复合或表格数据。

检测服务器应用程序

在创建管理接口时,某些参数和操作的特点很自然地就表明这些参数和数据 应当被包含在内,例如配置参数、操作统计值、调试操作(例如修改日志级别或 把应用程序状态导出到文件)、生命周期操作(启动、停止)。检测一个应用程 序,让它支持对这些属性和操作的访问,通常相当容易。但是,要从 JMX 获得 最大价值,就要在设计时考虑什么数据在运行时对用户和操作员有用。

如果用 JMX 了解服务器应用程序的工作情况,需要一种标识和跟踪工作单元 的机制。如果使用标准的 Runnable 和 Callable 接口描述任务,通过让任务类 自描述(例如实现toString() 方法),可以在任务生命周期内跟踪它们,并提 供 MBean 方法来返回等候中、处理中和完成的任务列表。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号