快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ntroller);      }       protected Object getKey() {        return controller.getClass();      }                  };    return rc.execute();      }    // Controller where the name of the signature at the monitored join point  // determines what is being executed, for example, the method name  /**   * This defaults to no join points. If a concrete monitor overrides   * methodSignatureControllerExec with a concrete   * definition, then it will track operations at matching join points   * based on the run-time class of the executing controller instance   * and the method signature at the join point.   */   protected pointcut methodSignatureControllerExec(Object controller);  Object around(final Object controller) :    methodSignatureControllerExec(controller) {    RequestContext rc = new OperationRequestContext() {      public Object doExecute () {        return proceed(controller);      }      protected Object getKey() {        return concatenatedKey(controller.getClass(),          thisJoinPointStaticPart.getSignature().getName());      }    };    return rc.execute();      } 

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

时间:2011-09-07 IBM Ron Bodkin

classControllerExec() 的切点捕获所有类控制器处理请求的点,像 Servlet do 方法执行或者普通 Struts action execute 方法,在这里响应请求的对象的 类确定要执行的操作。更准确地说, classControllerExec() 切点 定义了一个 空的切点(它不会匹配任何连接点)。然后它提供一个具体建议,这个建议设置 工人对象并返回对于这种情况正确的键值。这与使用一个抽象切点类似,其中子 方面必须覆盖切点以使用建议。不过在这里,我提供了永远不匹配的默认定义。 如果 AbstractOperationMonitor 的子方面不需要监视类控制器,那么它不覆盖 这个切点就行了。如果它需要监视类控制器,那么它就提供什么时候监视一个点 的定义。

具体化操作监视器

methodSignatureControllerExec() 切点和关联的建议类似:它们提供具体 化 操作监视方面的方法,以根据连接点上的签名匹配分派到不同方法的控制器。

清单 3 展示了扩展 AbstractOperationMonitor 以监视 Struts 和 Spring MVC 操作的具体方面:

清单 3. 监视 Struts 和 Spring MVC 框架

public aspect StrutsMonitor extends AbstractOperationMonitor {   /**     * Marker interface that allows explicitly _excluding_ classes     * from this monitor: not used by default. If using Java™ 5, an    * annotation would be better.    */   public interface NotMonitoredAction {}  /**   * Matches execution of any method defined on a Struts action or   * any subclass, which has signature of an action execute (or   * perform) method, including methods dispatched to in a   * DispatchAction or template methods with the same signature.   */  public pointcut actionMethodExec() :    execution(public ActionForward Action+.*(ActionMapping,        ActionForm, ServletRequest+, ServletResponse+)) &&    !within (NotMonitoredAction);  /**   * Matches execution of an action execute (or perform)

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