J2EE Web处事客户端质量陈诉(一)
副标题#e#
提要
本文实现了记录J2EE(Java2平台企业版)Web处事的客户端响应次数的一个通用的布局。记录的响应次数是真实的客户端响应次数,所以它们实际上反应了用户对处事质量的观点。尝试的样品是利用Sun ONE (开放式网络情况)应用处事器和IDE成立起来的,可是这个要领很普通,很容易推广到其它J2EE实现上。
Web处事正迅速的成为实现客户端-处事器系统的首选布局。它的利益是:企业可以正式的界说一组处事,然后生成通讯用的完整的客户端和处事器的代码库,从而简化新的客户端对正当的Web资源的会见。
可是,Web 处事在简化客户端-处事器系统的成立的同时,监控处事质量就变得很重要。 假设有一个在用户的态度上提交处理惩罚的客户端应用措施。而企业事务凡是要挪用好几个Web处事:初始挪用递交事情内容,接下来的挪用查抄实现,最终挪用得出功效。一个挪用就是一个非凡的HTTP/SOAP (简朴工具会见协议)互换。假设你是IT部分专门认真监控处事器装载和预测将来需要的事恋人员,你必需得答复这个根基问题:"我此刻打点我的客户端奈何呢?对付未来的打点,我还需要什么对象?"
假如你只有HTTP日志的话,就很难答复上述问题了。客户端只体贴事务的处理惩罚,可是因为每个事务包罗几个HTTP请求,对付评估处事质量,你最多只能开拓自界说数据收罗软件,该软件可通过HTTP日志做出指示并成立用户事务处理惩罚的模子。就算是这样,你所拥有的信息仍然有限,因为它不能反应网络传送可能客户端应用措施的内务操纵。
本文的中心思想是:事务处事质量用客户端评估最好。这儿回收的要领就是答允客户端记录实际的事务响应次数。客户端应用措施通过将响应时间陈诉添加到下一个弹出的事务处理惩罚请求上,从而上传响应时间陈诉给处事器。处事器取出这些附件并将他们列队储存和在线阐明。
布局
基于客户端的频率记录布局的方针就是:记任命的下部结构必需是轻型的,它不单有利于实现运行的内务开销还可以减轻添加它到一个现有的实现的承担。我们也但愿该布局对提供的处事没有限制,我们很想可以将处事添加到一个现有的、可以尽大概容易地利用Web处事的客户端-处事器系统上。
我们的布局的另一个方针是:企业应用措施自身的靠得住性不要太差。我们将引入一些新的、容易做到的步调到应用措施的处理惩罚事情流程中。并且我们可以担保这些新步调中的任何妨碍都可以得处处理惩罚,我们不会因为不能将频率用于措施就让企业事务的处理惩罚失败
下图显示了一个典范的J2EE(Java 2 平台企业版)Web处事的客户端-处事器应用措施。典范的组件用粗线标明;我们添加的新组件用于收集频率,它回收红线标明。
J2EE Web services: Metrics-gathering architecture
"J2EE Application Server"区域暗示现有的处事器资源。他们是用来处理惩罚客户端请求的企业JavaBeans (EJB) 组件。东西可自动的生成Web处事软件包。EJB组件和相关的 Web 处事模块被看成J2EE应用措施设置到J2EE处事器上。当应用措施设置时,客户端可以通过挪用措施WSDL (Web 处事描写语言)处事来判定一个处事。WSDL处事对措施提供的处事给出正式的界说。
"Application Client"区域由措施组件和Web处事软件包构成。措施组件实现贸易逻辑和用户界面。Web处事软件包可自动地通过WSDL编译器和J2EE处事器措施提供的WSDL处事建设出来。
从理论上来说,整个客户端-处事器系统有两层。应用措施层在处事器端拥有EJB组件,在客户端拥有一个应用措施。Web 处事层有一个处事器实现和一个客户端实现,两者都可以自动发生。
典范地,用户的贸易事务处理惩罚包罗很多个处事期挪用。第一个挪用初始化事务,返回一个"handle" 给客户端。厥后的挪用查询事务的完成–客户端利用句柄挪用处事来查抄事务是否得处处理惩罚。凡是最后一个挪用可获得完成的事务的状态。因此,一个贸易模子,可在客户端措施内实现的贸易模子,老是使得事务与初级此外处事器挪用接洽起来。
我们可以将收集频率的组件添加到我们的尺度J2EE Web处事布局上。上图中的Payload软件包在处事器和客户端都有设置。稍后我会具体的接头这个软件包,可是从布局的意义上来讲,这个软件包提供了几个处事。譬喻:客户端措施可以利用beginTransaction() 和 commitTransaction()来定界事务和记录次数。客户端Web处事软件包利用Payload软件包来连载次数陈诉给SOAP信息附件。处事器端的Web处事软件包利用Payload软件包将SOAP附件从引入的请求中剥离出来,并将它排队挂号和陈诉。
#p#分页标题#e#
这个实现中的系统操纵很少因为客户端和处事器不互换任何新的通信–完成的事务的频率陈诉与下一个客户端请求一起运送。引入的独一的新的处理惩罚就是客户端上的一些连载和处事器端列队期待的附件。整个实现很精练,因为只要添加一行代码到每个措施Web要领上,而且代码照旧一样的–假如Web要领的标志稳定的话他也不会产生变革。
引入的最后一个组件就是信息驱动的EJB组件,它可读取连载的频率附件。典范的,这些附件将会记录到一个数据库中所以企业可以生存事务处事质量的汗青记载。企业可以利用这个数据库将真实的事务响应次数与处事器资源的利用接洽起来,从而可以判断性的判定出哪个处事器组件才是要害的处事瓶颈。因为附件是列队期待的,所以频率读取器EJB组件应该在差异的J2EE处事器上运行,我们不但愿利用贸易EJB组件记载的频率附件竞争资源。
#p#副标题#e#
实现
在这个部门,我将会汇报你如何将频率代码集成到简朴的J2EE客户端-处事措施上。所有的代码都可从Resources处下载;下面部门将汇报你如何利用Sun ONE (开放网络情况)应用措施框架来成立和运行频率代码。
应用处事原型
在本例中,处事器应用包罗一个单一的会话期bean。这无损于应用措施的一般性因为内部的处事EJB设计不影响记录频率的布局。纵然处事器中有很多差异的EJB组件也可以利用 同样的频率要领。
XactBean EJB袒露了三个贸易要领:submitWork()、 checkWork()、和getResult()。每个要领都各有差异。客户端应用利用这三个要领来模仿一个客户端,该客户端可提交多个Web请求以执行用户的事务。
代表处事器应用的会话期bean显示如下:
package TransactionProcessor;
import javax.ejb.*;
import java.rmi.server.*;
import java.util.*;
/**
* Created May 19, 2003 10:07:39 PM
* Code generated by the Sun ONE Studio EJB Builder
* @author Brian Connolly [email protected]
*/
public class XactBean implements javax.ejb.SessionBean {
private javax.ejb.SessionContext context;
private int mRandom;
/**
* @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
*/
public void setSessionContext(javax.ejb.SessionContext aContext) {
context=aContext;
}
/**
* @see javax.ejb.SessionBean#ejbActivate()
*/
public void ejbActivate() {
}
/**
* @see javax.ejb.SessionBean#ejbPassivate()
*/
public void ejbPassivate() {
}
/**
* @see javax.ejb.SessionBean#ejbRemove()
*/
public void ejbRemove() {
}
/**
* See section 7.10.3 of the EJB 2.0 specification
*/
public void ejbCreate() {
Random r = new Random();
mRandom = r.nextInt(10000);
}
public java.lang.String SubmitWork(java.lang.String Work) {
return new Integer(mRandom).toString();
}
public boolean CheckWork(java.lang.String Xact) {
return true;
}
public java.lang.String GetResult(java.lang.String Xact) {
return new Integer(mRandom).toString();
}
}
这三个要领可模仿客户端事务处理惩罚。在submitWork()中,我们发生了一个作为任意号码利用的句柄–实际上它是独一的事务标志符。checkWork()老是返回"真"。在实际的系统中,客户端通报事务标志符,所以checkWork()利用一个回溯的事务打点器查抄事务是否已经完成。雷同的,在实际的系统中,getResult()返回一个巨大的事务完成记载。