快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
请求的操作统计值与它们双亲的统计值 关联起来(例如,哪个 servlet 请求造成了这个数据库访问)。对于示例监视 系 统来说,我明确地 需要 嵌套的工人对象,而 不想 把自己限制在只能处理顶级 请求上。例如,所有的 Duke 书店 servlet 都把调用 BannerServlet 作为显示 页面的一部分。所以能把这些调用的次数分开是有用的,如清单 5 所示。在这 里 ,我没有显示在操作统计值中查询嵌套统计值的支持代码(可以在本文的源代码 中看到它)。在第二部分,我将重新回到这个主题,介绍如何更新 JMX 支持来 显 示像这样的嵌套统计值。

清单 5. 更新的 servlet 监视

清单 5 should now read public aspect HttpServletMonitor extends AbstractRequestMonitor {  /** Monitor Servlet requests using the worker object pattern */  Object around(final Object operation) :   monitoredOperation(operation) {     RequestContext requestContext = new RequestContext() {       public Object doExecute() {        return proceed (operation);      }      public PerfStats lookupStats() {        if (getParent() != null) {            // nested operation          OperationStats parentStats = (OperationStats)getParent().getStats();           return parentStats.getOperationStats(operation.getClass ());        }        return lookupStats (operation.getClass());      }     };     return requestContext.execute();   } ...

清单 5 显示了修订后进行 serverlet 请求跟踪的监视建议。余下的全部代 码 与 清单 1 相同:或者推入基方面 AbstractRequestMonitor 方面,或者保持一 致。

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

时间:2011-09-07 IBM Ron Bodkin

JDBC 监视

设置好性能监视框架后,我现在准备跟踪数据库的连接次数以及数据库语句 的 时间。而且,我还希望能够把数据库语句和实际连接的数据库关联起来(在 lookupStats() 方法中)。为了做到这一点,我创建了两个跟踪 JDBC 语句和连 接信息的方面: JdbcConnectionMonitor 和 JdbcStatementMonitor。

这些方面的一个关键职责是跟踪对象引用的链。我想根据我用来连接数据库 的 URI 跟踪请求,或者至少根据数据库名称来跟踪。这就要求跟踪用来获得连接的 数据源。我还想进一步根据 SQL 字符串跟踪预备语句(在执行之前就已经准备 就 绪)。最后,我需要跟踪与正在执行的语句关联的 JDBC 连接。您会注意到: JDBC 语句 确实 为它们的连接提供了存取器;但是,应用程序服务器和 Web 应 用程序框架频繁地使用修饰器模式包装 JDBC 连接。我想确保自己能够把语句与 我拥有句柄的连接关联起来,而不是与包装的连接关联起来。

JdbcConnectionMonitor 负责测量数据库连接的性能统计值,它也把连接与 它 们来自数据源或连接 URL 的元数据(例如 JDBC URL 或数据库名称)关联在一 起 。JdbcStatementMonitor 负责测量执行语句的性能统计值,跟踪用来取得语句 的 连接,跟踪与预备(和可调用)语句关联的 SQL 字符串。清单 6 显示了 JdbcConnectionMonitor 方面。

清单 6. JdbcConnectionMonitor 方面

/** * Monitor performance for JDBC connections, * and track database connection information associated with them. */ public aspect JdbcConnectionMonitor extends AbstractRequestMonitor {   /** A call to establish a connection using a    * <code>DataSource</code>     */   public pointcut data

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