AOP@Work: 用AspectJ进行性能监视,第1部分 - 编程入门网
据库名称的连接的 连接图。随后在执行 JDBC 语句更新对应请求的统计值时,会使用这个图。 JdbcConnectionMonitor 还提供了一个辅助方法 getDatabaseName(),它从连接 图中查询字符串名称找到连接。
弱标识图和方面 JDBC 监视方面使用 弱标识 哈希图。这些图持有 弱 引用,允许连接这样的 被跟踪对象在只有方面引用它们的时候,被垃圾收集掉。这一点很重要,因为单 体的方面通常 不会 被垃圾收集。如果引用不弱,那么应用程序会有内存泄漏。 方面用 标识 图来避免调用连接或语句的hashCode 或 equals 方法。这很重要 , 因为我想跟踪连接和语句,而不理会它们的状态:我不想遇到来自 hashCode 方 法的异常,也不想在对象的内部状态已经改变时(例如关闭时),指望对象的哈 希码保持不变。我在处理动态的基于代理的 JDBC 对象(就像来自 iBatis 的那 些对象)时遇到了这个问题:在连接已经关闭之后调用对象上的方法就会抛出异 常。在完成操作之后还想记录统计值时会造成错误。 从这里可以学到的教训是:把对第三方代码的假设最小化。使用标识图是避 免 对接受建议的代码的实现逻辑进行猜测的好方法。在这种情况下,我使用了来自 DCL Java 工具的 WeakIdentityHashMap 开放源码实现(请参阅 参考资料)。 跟 踪连接或语句的元数据信息让我可以跨越请求,针对连接或语句把统计值分组。 这意味着可以只根据对象实例进行跟踪,而不需要使用对象等价性来跟踪这些 JDBC 对象。另一个要记住的教训是:不同的对象经常用不同的修饰器包装(越 来 越多地采用动态代理) JDBC 对象。所以假设要处理的是这类接口的简单而原始 的实现,可不是一个好主意! jdbcStatementMonitor 内部 清单 7 显示了 JdbcStatementMonitor 方面。这个方面有两个主要职责:跟 踪与创建和准备语句有关的信息,然后监视 JDBC 语句执行的性能统计值。 清单 7. JdbcStatementMonitor 方面
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |