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

豆豆网   技术应用频道   2006年11月26日    社区交流

本文详细介绍J2EE Web服务客户端质量报告(五)

  建立样品客户端应用

  要建立样品客户端应用,请将下列文件系统添加到IDE中:<download directory>/Metrics/TransactionClient.

  该文件系统包含一个应用类和一个Xact 软件包。应用类可模仿客户端事务的执行,Xact 软件包包含客户端Web服务处理器。

  Xact软件包可使用Sun Web服务开发者工具包来创建,这个工具包包括在Sun ONE应用框架内。批文件gen.bat使用wscompile命令创建Xact软件包。如果你想重建该软件包的话, 你只需调整环境变量和它使用的config.xml 中的URL。但是,如果你这样做的话,你得重写添加到Stub 类Web方法的代码行,你要用它来覆盖原来的代码行。

  我们看看XactClientApp,样品客户端应用程序类:

import Xact.*;
import javax.xml.rpc.Stub;
import Payload.*;
public class XactClientApp {
/** Creates a new instance of XactClientApp */
public XactClientApp() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
 try {
  int cyclesPerXact = 1;
  int numberXacts = 5;
  String transactionID = "";
  String transactionType =
  String.valueOf(cyclesPerXact) +" submit,check,gets";
  Stub stub = createProxy();
  XactServiceServantInterface xact = (XactServiceServantInterface)stub;
  CurrentReport cr = new CurrentReport();
  for (int x=1; x<= numberXacts;x++){
   cr.BeginTransaction();
   for (int i=1; i<=cyclesPerXact;i++){
    transactionID = xact.submitWork("new transaction");
    System.out.println("Transaction:" + transactionID);
    boolean unused = xact.checkWork(transactionID);
    String ignore = xact.getResult(transactionID);
   }
   cr.CommitTransaction(transactionID, transactionType,"success");
  }
 } catch (Exception ex) {
  ex.printStackTrace();
 }
}
private static Stub createProxy() {
 return (Stub)(new XactService_Impl()).getXactServiceServantInterfacePort();
}
}

  先看它的内部循环。客户端应用判断商业事务的组成。在本例中,它包括三个Web服务调用:针对submitWork()、checkWork()和getResult()的分别调用。客户端使用beginTransaction()和 commitTransaction()定界事务。在该循环的第二个循环中,在CurrentReport.LastReport 对象中将出现一个完整的ClientReport。当客户端调用submitWork()时,Web 服务客户端Stub 类中相应方法调用Serializer.attachPendingReportToMessage() 将该报告连接到SOAP信息上。

责编:豆豆技术应用

正在加载评论...