快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
. 检测常见 Web 故障

 /** Call of send error in the Servlet API */  public pointcut sendingErrorResponse(HttpServletResponse response,        int sc) :    target(response) && call(* sendError(..)) && args(sc, ..);    /** Track a failure after sending an error response */  after(HttpServletResponse response, RequestContext requestContext,      int sc) returning :     sendingErrorResponse(response, sc) && inRequest (requestContext) {    requestContext.setErrorContext(new Integer(sc));  }  /** Execute handle page exception in the JSP API */  public pointcut handlePageException(PageContext pageContext,       Throwable t) :    call(* PageContext.handlePageException(*)) &&    target(pageContext) && args(t);  /** Track a failure when showing an error page */  after(PageContext pageContext, RequestContext requestContext,      Throwable t) returning :   handlePageException(pageContext, t) && inRequest(requestContext) {    requestContext.setErrorContext (t);  }

扩展库方面

有些时候,当我构建 Glassbox Inspector 时,需要让库方面更有可扩展性 。 在下面列出了一些可用的常见选项。其中一些选项我已经展示过了,它们都很有 用:

提供一个抽象切点以定义方面用在什么地方(例如,一个 scope() 定义)。

提供一个空的切点,必须为要使用的某个建议覆盖它(如在 清单 2 中的 AbstractOperationMonitor)。在许多情况下,少数的具体方面需要使用给定的 建议,因此有一个空的默认值更有用。像这样的模板切点有一个空的默认实现与 模板方面有一个空的默认实现很相像。

利用标志性接口表明方面应用于哪些类型。因为接口是继承的,所以这些类 型 的所有子类型都包括在内了。

利用 Java 5 注释表明方面应用于哪些类型和/或方法。这种方法使您可以细 化对方面应用领域的控制,可以按方法定义,以及包括类而不包括它的子类。

提供运行时行为配置,有测试一种功能是否启用的逻辑。例子请参阅 运行时 控制。

在应用程序中集成了这些扩展后,我就完成了对 Glassbox Inspector 监视 的 扩展(至少对于本文的目的 —— 本文结束的地方就是开放源码项目开始的地方 !)。我现在有了一个将应用程序性能按照逻辑组织到一起的有用视图,这样就 可以通过 web 应用程序中的请求用标准 JMX 客户机观察总体性能统计和错误。 对于有疑问的地方,我还可以深挖数据库或者 Web 服务的性能和可靠性。图 1 显示了在 Spring Petclinic、iBatis JPetstore 和 Duke 的 Bookstore Web 应 用程序例子中使用的 Glassbox Inspector 监视工具:

图 1. 使用中的完整监视基础架构的快照

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

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

时间:2011-09-07 IBM Ron Bodkin

错误处理

在这之后,我将重点放到如何更容易地部署扩展的 Glassbox Inspector 监 视 基础架构上。迈向用于企业管理的基础架构的第一步是扩展 Glassbox Inspector 来实现错误隔离。传统上,开发人员尽可能保证像性能监视这样的功能不会产生 影响被监视应用程序的错误。不过,监视代码中未预料到的行为(如未预计到的 null 值、抛出异常的代理等)有时会在监视代码自身中产生错误。在这些情况 下 ,隔离 错误的能力可提高监视实现的健壮性。系统初始化时出现的问题可能造 成 错误隔离方面不能缓冲的错误,但是这种问题通常是立即发生的,并容易在开发 时捕获,使得它的风险降低了很多。

我的基

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