快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
问器,它提供了自己的编程管理接口。 还可以 选择在实现类中直接实现管理功能(让 TrackingThreadPool 实现 TrackingThreadPoolMBean 接口),或者单独实现(如清单 4 和 5 所示)。

清单 5. TrackingThreadpool 的 MBean 实现

public class ThreadPoolStatus implements ThreadPoolStatusMBean {    private final TrackingThreadPool pool;    public ThreadPoolStatus(TrackingThreadPool pool) {      this.pool = pool;    }    public int getActiveThreads() {      return pool.getPoolSize();    }    public int getActiveTasks() {      return pool.getActiveCount();    }    public int getTotalTasks() {      return pool.getTotalTasks();    }    public int getQueuedTasks() {      return pool.getQueue().size();    }    public double getAverageTaskTime() {      return pool.getAverageTaskTime();    }    public String[] getActiveTaskNames() {      return toStringArray(pool.getInProgressTasks());    }    public String[] getQueuedTaskNames() {      return toStringArray(pool.getQueue());    }    private String[] toStringArray(Collection<Runnable> collection) {      ArrayList<String> list = new ArrayList<String> ();      for (Runnable r : collection)        list.add(r.toString());      return list.toArray(new String[0]);    } }

为了演示这些类如何提供对应用程序操作的内容的了解,请考虑这样一个 Web 搜寻应用程序,它把工作分成两类任务:获取远程页面,对页面进行索引。 每个任务分别用清单 6 所示的 FetchTask 或 IndexTask 描述。可以创建 ThreadPoolStatus MBean,提供处理这些任务所使用的线程池的管理接口,并把 它用 JMX 注册。

清单 6. Web 搜寻应用程序中使用的 FetchTask 类

public class FetchTask implements Runnable {    private final String name;    public FetchTask(String name) {      this.name = name;    }    public String toString() {      return "FetchTask: " + name;    }    public void run() { /* Fetch remote resource */ } }

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

时间:2010-12-20 IBM Brian Goetz

当此程序处理每个页面时,可能还会对新任务进行排队以获取这个页面上链 接的页面,所以在指定时间内,可能会既有获取任务又有尚未完成的索引任务。 能够正确地判断正在处理哪个页面,或者正在等候处理哪个页面,不仅让您可以 理解应用程序的性能特征,还可以理解应用程序所操作的数据的特征。

图 4 显示了正在处理 whitehouse.gov 站点的 Web 搜寻程序的快照。从图 中可以看到已经获取并索引了主页,程序现在的工作是获取和索引直接从该主页 链接出的页面。单击 Refresh 按钮,可以对应用程序的工作流程进行取样,它 可以提供许多关于应用程序工作情况的信息,却不需引入大量日志或者在调试器 中运行应用程序。

图 4. Web 搜寻应用程序中的活动任务和排队任务

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

结束语

结合平台内的 JMX 支持和 jconsole JMX 客户机可以提供一种向应用程序添 加管理和监视功能的轻松方式。即使是没有具体管理需求的应用程序,为它们构 建这些功能也会让您对程序的运行及其所处理的数据的性质获得深入了解,而且 不需太多的工作和努力。如果应用程序导出管理接口,此接口让您可以查看它操 作的内容,那么您就会更加了解它的运行状态——对它是否按预期的方式工

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号