快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
method for   * a Struts action. Supports the Struts 1.0 API (using the perform   * method) as well as the Struts 1.1 API (using the execute method).   */  public pointcut rootActionExec() :    actionMethodExec() && (execution(* Action.execute(..)) ||    execution(* Action.perform(..)));     /** @Override */   protected pointcut classControllerExec(Object controller) :      rootActionExec() && this(controller);  protected pointcut dispatchActionMethodExec() :    actionMethodExec() && execution(* DispatchAction+.*(..));  protected pointcut methodSignatureControllerExec(Object controller):     dispatchActionMethodExec() && this(controller); } public aspect SpringMvcMonitor extends AbstractOperationMonitor {  /**   * marker interface that allows explicitly _excluding_ classes   * from this monitor: not used by default   */  public interface NotMonitoredController {}     public pointcut springControllerExec() :    execution(public ModelAndView Controller+.*(HttpServletRequest,         HttpServletResponse)) &&    !within (NotMonitoredController+);  protected pointcut classControllerExec(Object controller) :     springControllerExec() && execution(* handleRequest(..)) &&    this(controller);  protected pointcut methodSignatureControllerExec(Object controller):     springControllerExec() &&    execution(* MultiActionController+.*(..)) && this(controller);   }

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

时间:2011-09-07 IBM Ron Bodkin

关于这两个方面首先要注意的是它们非常简洁。它们只是扩 展 了操作监视器中的两个切点以具体地监视它们特定的 API。因为它们的简洁性, 也可以在 XML 中定义这两个具体工作监视器,而不用编译。关于 AspectJ 5 的 这个功能的例子请参阅 清单 10。

关于 StrutsMonitor 和 SpringMvcMonitor

清单 3 中的 StrutsMonitor 方面设计为同时使 用 老版本和新版本的 Struts API: Struts 1.0 操作是通过调用 perform() 而调 用的,而 Struts 1.1 操作是通过调用 execute() 而调用的。我将正常操作类 的 具体子类作为 Class 控制器跟踪:只有执行对象的类才是关注的。不过,如果 一 个类扩展了 DispatchAction,Struts 可以让控制器分派给这个类中的多个方法 。我通过匹配 DispatchAction 子类中所有具有 Struts 操作签名的方法监视在 这些分派操作中执行的各个方法。这种方式使我可以分别跟踪每一个不同控制器 方法的统计。

我用 iBatis JPetStore 1.3 示例应用程序(请参阅 参考资料) 测试了 StrutsMonitor。与许多应用程序一样,它用自己的一个小 框 架扩展了 Struts:公共基本操作有一个名为 perform() 的方法,它向 helper 分派用 doPerform() 作为模板方法的操作。不过,不需要跟踪这些模板方法的 执 行:类级别的控制器会识别在 execute() 方法中执行的 Action 的特定子类, 这 足以区分它们了。

SpringMvcMonitor 方面与 StrutsMonitor 有一 点 很类似,它们将所有 Controller 对象作为类控制器,监视它什么时候执行 handleRequest()。它还监视 MultiActionController 或者它的任何子类中具有 Spring 控制器方法签名的公共方法的执行。例如,我在这段代码中分别监视 welcomeHandler() 和 ownerHandler() 的执行

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