频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

J2EE Web服务客户端质量报告(三)

来源: 作者:陈姣姣编译 出处:巧巧读书 2007-12-12 进入讨论组
下一页 1 2 

  Payload软件包

  Payload软件包可用于客户端,也可用于服务器。它包含三个类:ClientReport、CurrentReport、和 Serializer。



  ClientReport 表示一个客户端次数报告:

package Payload;

import java.io.*;
import java.util.*;

/**
*
* @author Brian Connolly Brian@ideajungle.com
*/
public class ClientReport implements Serializable {

 public Date clientStartDateTime;
 public Date serverStartDateTime;
 public long clientElapsedMS;
 public String type;
 public String status;
 public String transactionID;
 public String clientID;
 //Default public constructor for WSDL
 public ClientReport() {
 }

/*
. . . Get, set property methods are not shown
*/

  在上述代码中,clientStartDateTime记录客户端初始化事务的时间。serverStartDateTime 当前没有使用;它的用途是保存事务的服务器开始时间以便事务次数可与服务器资源使用的随时间的变化关联起来。

  ClientElapsedMS是我们记录的主要工具:从客户端开始记录新事务到它收到最后一个Web服务调用的结果为止这段时间的毫秒数。

  Type允许客户端使用类型特征化事务。通常,事物系统提供许多种类型的事务。我们期望某些类型对于服务器来说相对容易一些,某些类型相对难一些,这样当我们分析响应次数和测量服务器资源时我们能够将他们辨别出来。

  Status记录事务完成时的完成状态。

  ClientID 是客户端标记符。当分析服务品质时我们可以使用它来区别同一个客户端完成的事务。

  客户端使用第二个类CurrentReport来定界应用事务:

package Payload;

import java.util.*;
import java.rmi.server.*;

/**
*
* @author Brian Connolly Brian@ideajungle.com
*/
public class CurrentReport {

 public static UID ClientIdentifier = new UID();
 /** Holds value of property currentReport */
 public static ClientReport Report;
 public static ClientReport LastReport;

 /** Creates a new instance of CurrentReport */
 public CurrentReport() {
 }

 public void BeginTransaction() {
  Report = new ClientReport();
  Report.setClientID(ClientIdentifier.toString());
  Report.setClientStartDateTime( new Date());
 }

 public void CommitTransaction(String transactionID, String type, String status) {
  Report.setTransactionID(transactionID);
  Report.setStatus(status);
  Report.setType(type);
  long l1 = Report.getClientStartDateTime().getTime();
  long l2 = new Date().getTime();
  Report.setClientElapsedMS(l2-l1);
  LastReport = Report;
  Report = null;
 }

/** Getter for property currentReport
* @return Value of property currentReport
*/

 public static ClientReport getReport() {
  ClientReport last = LastReport;
  LastReport = null;
  return last;
 }

/** Setter for property currentReport
* @param currentReport New value of property currentReport
*/

 public void setReport(ClientReport Report) {
  this.LastReport = Report;
 }
}

  CurrentReport保存进行中的事务的当前 ClientReport 。它也保存LastReport,也就是一个完成的事务。它还产生一个作为唯一设备标记符使用的客户端标记符——在实际的应用中,这个客户端标记符可被修改为全局的唯一标记符。CurrentReport是非线程安全的;我们假设在客户端应用中只有一个单线程执行服务器事务。图 文 结 合:http://www.qqread.com/j2ee/w584186012.html进入讨论组讨论。
下一页 1 2 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章