快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ends AbstractOperationMonitor {  /**   * Execution of any Servlet method: typically not overridden in   * HttpServlets.   */  public pointcut ServletService(Servlet Servlet) :    execution(void Servlet.service(..)) && this(Servlet);  /** Execution of any Servlet request methods. */  public pointcut httpServletDo (HttpServlet Servlet) :    execution(void HttpServlet.do*(..)) && this(Servlet);  /** Execution of any JSP page service method. */  public pointcut jspService(JspPage page) :    execution(* _jspService(..)) && this(page);   protected pointcut classControllerExec(Object controller) :     (ServletService(*) || httpServletDo(*) || jspService(*)) &&    this(controller);  /**   * Create statistics for this object: looks up Servlet context to   * determine application name.   */  protected String getContextName(Object controller) {    Servlet Servlet = (Servlet)controller;    return Servlet.getServletConfig().getServletContext().         getServletContextName();  } }

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

时间:2011-09-07 IBM Ron Bodkin

更新 JMX 以得到嵌套的统计

在 第 1 部分中,我扩展了 Glassbox 监视基础架构以提供嵌套的统计,如 Servlet 请求的连接中的 JDBC 语句。在这里,我分析了如何更新 StatsJmxManagement 方面以提供这些嵌套统计的复合名。我还展示如何将应用 程 序名加入到这个复合名中。例如,数据库语句的统计可以用以下字符串命名:

application=Spring Petclinic,operation=org.springframework.samples. petclinic.web.Clin i cController,database=jdbc:hsqldb:hsql://localhost: 9001,statement=S E LECT id;name from types ORDER BY name

这个字符串使用给定信息的所有前级统计的性能统计的描述和名字。以这种 方 式命名统计使 JMX 工具可以自然地将相关的信息组织并显示在一起。像 JConsole 这样的 JMX 工具使用结构化的名字来组织常见的元素,更容易以层次 化的方法浏览,如 图 1 所示。清单 5 展示了为支持这个功能需要对 StatsJmxManagement 进行的更新;

清单 5. 更新 StatsJmxManagement 以支持嵌套的统计

public aspect StatsJmxManagement { private String PerfStats.cachedOperationName; /** JMX operation name for this performance statistics bean. */ public String PerfStats.getOperationName() { // look up from cache // else ... appendOperationName(buffer); ... return operationName; } /** Add bean''s JMX operation name to a StringBuffer. */ public void PerfStats.appendOperationName(StringBuffer buffer) { if (cachedOperationName != null) { buffer.append(cachedOperationName); } else { aspectOf().nameStrategy.appendOperationName(this, buffer); } } public void PerfStats.appendName(StringBuffer buffer) { // append the appropriate name & JMX encode ... } public StatsJmxNameStrategy getNameStrategy() {...} public void setNameStrategy(StatsJmxNameStrategy nameStrategy) { ... } private StatsJmxNameStrategy nameStrategy; } public interface StatsJmxNameStrategy { void appendOperationName(PerfStats stats, StringBuffer buffer); } public class GuiFriendlyStatsJmxNameStrategy extends AbstractStatsJmxNam

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