快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
   return result;      }     /** template method: proceed with original request */     public abstract Object doExecute();     /** template method: determines appropriate performance      *  statistics for this request      */     protected abstract PerfStats lookupStats();     /** returns performance statistics for this method */     public PerfStats getStats() {       if (stats == null) {          stats = lookupStats(); // get from cache if available       }       return stats;     }     public RequestContext getParent() {       return parent;      }     public void setParent(RequestContext parent) {        this.parent = parent;     }   } }

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

时间:2011-09-07 IBM Ron Bodkin

不出所料,对于如何存储共享的性能统计值和基方面的每请求状态,有许多 选 择。例如,我可以用带有更底层机制的单体(例如 ThreadLocal)持有一堆统计 值和上下文。但是,我选用了工人对象(Worker Object)模式(请参阅 参考资 料),因为它支持更加模块化、更简洁的表达。虽然这会带来一些额外的开销, 但是分配单一对象并执行建议所需要的额外时间,比起为 Web 和数据库请求提 供 服务来说,通常是微不足道的。换句话说,我可以在不增加开销的情况下,在监 视代码中做一些处理工作,因为它运行的频繁相对很低,而且比起在通过网络发 送信息和等候磁盘 I/O 上花费的时间来说,通常就微不足道了。对于 profiler 来说,这可能是个糟糕的设计,因为在 profiler 中可能想要跟踪每个请求中的 许多操作(和方法)的数据。但是,我是在做请求的统计汇总,所以这个选择是 合理的。

在上面的基方面中,我把当前被监视请求的中间状态保存在匿名内部类中。 这 个工人对象用来包装被监视请求的执行。工人对象 RequestContext 是在基类中 定义的,提供的 final execute 方法定义了对请求进行监视的流程。execute 方 法委托抽象的模板方法 doExecute() 负责继续处理原始的连接点。在 doExecute() 方法中也适合在根据上下文信息(例如正在连接的数据源)继续处 理被监视的连接点之前设置统计值,并在连接点返回之后关联返回的值(例如数 据库连接)。

每个监视方面还负责提供抽象方法 lookupStats() 的实现,用来确定为指定 请求更新哪个统计对象。lookupStats() 需要根据被监视的连接点访问信息。一 般来说,捕捉的上下文对于每个监视方面都应当各不相同。例如,在 HttpServletMonitor 中,需要的上下文就是目前执行操作对象的类。对于 JDBC 连接,需要的上下文就是得到的数据源。因为要求根据上下文而不同,所以设置 工人对象的建议最好是包含在每个子方面中,而不是在抽象的基方面中。这种安 排更清楚,它支持类型检测,而且也比在基类中编写一个建议,再把 JoinPoint 传递给所有孩子执行得更好。

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

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

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

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

时间:2011-09-07 IBM Ron Bodkin

servlet 请求跟踪

AbstractRequestMonitor 确实包含一个具体的 after 建议,负责跟踪请求 上 下文的双亲上下文。这就让我可以把嵌套

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