AOP@Work: 用AspectJ进行性能监视,第2部分 - 编程入门网
当前对象和参数值。如果这样做了,那 么就需要有一种保证不记录敏感信息,如密码、信用卡号或者个人身份信息的方 法。为了完成这种集成,我对 AbstractRequestMonitor 做了小小的修改。细节 请参阅 文章源代码。
AOP@Work: 用AspectJ进行性能监视,第2部分(9)时间:2011-09-07 IBM Ron Bodkin对错误使用异常转换 基于前面的讨论,您可能奇怪如何能配置 Glassbox Inspector 以识别出某 些 throwable 不是错误。最容易的方法是传递一个对于给定监视方法(如 JdbcStatementMonitor)总是返回 false 的策略。另一种简单的解决方案是检 测 某种特定的异常类型,如 NumberFormatException,并指明它不是故障。这可以 结合 Exception Conversion 模式(请参阅 参考资料)以将某些异常转换为有 意 义的层次结构。清单 8 就是如何使用异常转换以及故障检测策略的一个示例: 清单 8. 跟踪故障并使用异常转换
清单 8 的第一部分显示了一个简单的错误处理方面,它软化了来自 JDBC 调 用的 SQLExceptions,然后使用一个 Spring 框架 SQLExceptionTranslator( 如 SQLErrorCodeSQLExceptionTranslator)将异常转换为有意义的(unchecked) 异 常。这个方面还用 AspectJ 的 declare precedence 格式声明优于 JdbcStatementMonitor。这保证了在 JdbcStatementMonitor 跟踪返回的异常类 型之前,DataAccessErrorHandling 已经转换了异常。 清单 8 的其他部分展示了一个示例策略,它只在几乎确实表明有故障(如无 法访问资源)的条件下表明故障。特别是,它排除了并发错误(在设计良好的、 多用户应用程序中会出现)和数据完整性破坏(如通常在注册新用户时发生)的 情况。 要对故障检测有更多的控制,可能要有一个标志性接口或者一个方法或者类 上 的注释,以表明在正常的操作过程中,系统的某些部分会抛出 Exception。这可 结合使用 declare parents 或者 AspectJ 5 新的 declare annotation 格式捕 获模块化规则,表明抛出一个 Throwable 是否表明故障。在大多数情况下,我 使 用的简单规则对于粗粒度的监视是合适的,但是要避免不正确的警报,最好有更 多的灵活性。 AOP@Work: 用AspectJ进行性能监视,第2部分(10)时间:2011-09-07 IBM Ron Bodkin检测常见 Web 故障 应用程序有可能在出现故障时并不抛出异常。一种最常见的情况是当控制器 处 理异常并将请求转发给一个错误页时。另一种情况是当对于页的 HTTP 响应指明 一个错误时。清单 9 更新了清单 4 中的 ServletMonitor 以检测这种情况。我 还对 AbstractRequestMonitor.RequestContext 工人对象做了小小的修改以设 置 错误上下文,并在设置错误上下文后记录故障。 清单 9 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |