快速业务通道

AOP@Work: 用AspectJ进行性能监视,第1部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ublic interface ManagedBean { /** Define a JMX operation name for this bean. * Not to be confused with a Web request operation. */ String getOperationName(); /** Returns the underlying JMX MBean that * provides management * information for this bean (POJO). */ Object getMBean(); } /** After constructing an instance of * <code>ManagedBean</code>, register it */ after() returning (ManagedBean bean): call(ManagedBean+.new(..)) { String keyName = bean.getOperationName(); ObjectName objectName = new ObjectName("glassbox.inspector:" + keyName); Object mBean = bean.getMBean(); if (mBean != null) { server.registerMBean(mBean, objectName); } } /** * Utility method to encode a JMX key name, * escaping illegal characters. * @param jmxName unescaped string buffer of form * JMX keyname=key * @param attrPos position of key in String */ public static StringBuffer jmxEncode(StringBuffer jmxName, int attrPos) { for (int i=attrPos; i<jmxName.length(); i++) { if (jmxName.charAt(i)=='','' ) { jmxName.setCharAt(i, '';''); } else if (jmxName.charAt(i)==''?'' || jmxName.charAt(i)==''*'' || jmxName.charAt(i)==''\\'' ) { jmxName.insert(i, ''\\''); i++; } else if (jmxName.charAt(i)==''\n'') { jmxName.insert(i, ''\\''); i++; jmxName.setCharAt(i, ''n''); } } return jmxName; } /** Defines the MBeanServer with which beans * are auto-registered. */ private MBeanServer server; public void setMBeanServer(MBeanServer server) { this.server = server; } public MBeanServer getMBeanServer() { return server; } }

AOP@Work: 用AspectJ进行性能监视,第1部分(6)

时间:2011-09-07 IBM Ron Bodkin

可以看出这个第一个方面是可以重用的。利用它,我能够用 after 建议自动 为任何实现 ManagedBean 接口的类登记对象实例。这与 AspectJ 标记器接口的 理念类似(请参阅 参考资料):定义了实例应当通过 JMX 公开的类。但是,与 真正的标记器接口不同的是,它还定义了两个方法 。

这个方面提供了一个设置器,定义应当用哪个 MBean 服务器管理对象。这是 一个使用反转控制(IOC)模式进行配置的示例,因此很自然地适合方面。在最 终 代码的完整清单中,将会看到我用了一个简单的辅助方面对系统进行配置。在更 大的系统中,我将用 Spring 框架这样的 IOC 容器来配置类和方面。请参阅 参 考资料 获得关于 IOC 和 Spring 框架的更多信息,并获得关于使用 Spring 配 置方面的介绍。

清单 3. 公开负责 JMX 管理的 bean

/** Applies JMX management to performance statistics beans. */ public aspect StatsJmxManagement { /** Management interface for performance statistics. * A subset of @link PerfStats */ public interface PerfStatsMBean extends ManagedBean { int getAccumulatedTime(); int getMaxTime(); int getCount(); void reset(); } /** * Make the @link PerfStats interface * implement @link PerfStatsMBean, * so all instances can be managed */ declare parents: PerfStats implements PerfStatsMBean; /** Creates a JMX MBean to represent this PerfStats instance. */ public DynamicMBean PerfStats.getMBean() { try { RequiredModelMBean mBean = new RequiredModelMBean(); mBean.setModelMBeanInfo (assembler.getMBeanInfo(this, getOpe

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