Java运行时监控,第2部分: 编译后插装和性能监控 - 编程入门网
lt;/stack>
.
.
<interceptor
class="org.runtimemonitoring.ejb.interceptors.ServerContextualInterceptor"
scope="PER_VM"/>
.
.
<domain name="Stateless Bean">
<bind pointcut="execution(public * *->*(..))">
<interceptor-ref name="org.aa4h.ejb.interceptors.ServerContextualInterceptor"/>
.
.
</bind>
</domain>
</aop>
Java运行时监控,第2部分: 编译后插装和性能监控(9)时间:2011-02-13 IBM Nicholas Whitehead这种性能数据收集方法可以一箭双标。首先,它可以告诉您从客户机的角度看,一个 EJB 目前的性能是多少。再者,如果性能滞后的话,传输时间可以很好地指明是否是由客户机和服务器间的网络连接速度缓慢而导致的。图 4 展示了总运行时间和上/下传输指标,该指标是从客户机度量的,度量方法是在客户机和服务器之间使用一个人为减缓的网络连接来突出显示传输时间: 图 4. 上下文客户机截取程序性能指标 使用客户端截取程序时,客户机截取程序类本身必须处于客户机应用程序的类路径中。或者一定要启用从服务器载入的远程类,这样才能够在启动时将客户端截取程序及其依赖项下载到客户机上。如果您的客户机系统时钟不是完全 与服务器系统时钟同步的话,您就会得到与两个时钟的时间差大小成正比的特殊结果。 Spring 中的截取程序 尽管 Java EE 提供丰富的正交无缝截取方法,但很多流行的非 Java EE 容器同样支持隐式的和显式的截取。我之所以使用容器 这个词是想暗指某种使用或鼓励使用松散耦合的框架。只要不使用紧密耦合,就能够实现截取。这种类型的框架通常称为依赖注入 或者 Inversion of Control(IoC) 架构。它们让您能够在外部定义个别组件如何 “粘合” 在一起,而不是硬编码组件,从而实现组件间的之间通信。我将使用流行的 IoC 框架 Spring Framework(参见 参考资料)中的跟踪截取程序来查看性能数据的收集,以此结束对截取的讨论。 Spring Framework 让您能够使用普通初始 Java 对象(Plain Old Java Object,POJO)来构建应用程序。POJO 仅包含业务逻辑,而 Spring 框架添加了构建企业应用程序所需的内容。如果在最初编写 Java 应用程序时没有考虑插装的话,Spring 的分层架构是很有用处的。虽然将应用程序架构备份到 Spring 并非一无是处,但除一系列的 Java EE 和 AOP 集成外,还有 Spring 的 POJO 管理特性足以将普通硬连接的 Java 类委托给 Spring 的容器管理功能。您可以通过截取添加性能插装,无需修改目标类的源代码。 Spring 通常被描述为 IoC 容器,这是因为它颠倒了 Java 应用程序的传统拓扑结构。在传统的拓扑中,会有一个中心的程序或控制线程按照程序载入全部需要的组件和依赖项。容器用 IoC 载入几个组件,并依照外部配置管理组件间的依赖项。此处的依赖项管理称为依赖项注入,因为依赖项(如 JDBC DataSource)是通过容器注入组件的;组件无需寻找到它们自己的依赖项。为了进行插装,容器的配置可以轻易修改,从而将截取程序插入到这些组件间的 “结缔组织” 中。图 5 解释了该概念: 图 5. Spring 和截取概观 Java运行时监控,第2部分: 编译后插装和性能监控(10)时间:2011-02-13 IBM Nicholas Whitehead现在我将要展示一个简单的用 Spring 截取的例子。它涉及一个 EmpDAOImpl 类,该类是一个基本的数据访问对象(data access object,DAO)模式类,它实现了一个定义了名为 public Map<Integer, ? extends DAOManaged> get(Integ |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |