top
Loading...
J2EEWeb服務客戶端質量報告(五)
天極IT資訊短信服務 電腦小技巧
資費:包月5元
手機:
介紹:細處著手,巧處用功。高手和菜鳥之間的差別就是:高手什么都知道,菜鳥知道一些。電腦小技巧收集最新奇招高招,讓你輕松踏上高手之路。

建立樣品客戶端應用

要建立樣品客戶端應用,請將下列文件系統添加到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信息上。

CyclesperXact和numberXacts用于控制每件事務的Web服務調用數和客戶端在運行過程中遞交的事務數。

右擊應用程序圖標XactClientApp;先選擇Build All項,接著選擇Execute項。在執行窗口中,你會看到:對于每件事務,應用都報告它收到的事務標志符。觀察應用服務Windows輸出控制臺,你可以看到以下的代碼行:

INFO: CORE3274: successful server startup
INFO: CORE5053: Application onReady complete.
INFO: CORE3282: stdout: Exception occurred connecting to queue: javax.naming.Nam
eNotFoundException
INFO: CORE3282: stdout: Exception occurred connecting to queue: javax.naming.Nam
eNotFoundException
INFO: CORE3282: stdout: Exception occurred connecting to queue: javax.naming.Nam
eNotFoundException
INFO: CORE3282: stdout: Exception occurred connecting to queue: javax.naming.Nam
eNotFoundException

我們還沒有安裝應用服務次數排列或者配置應用服務次數讀取器EJB。客戶端產生次數福建,服務器接收它,并試圖將它列隊到一個不存在的隊列中。Serializer 類只是報告錯誤并允許應用程序繼續運行。回想我們的目標之一就是保持商業事物系統的總可靠性。可是我們卻看到即使新的次數組件失敗,關鍵的商業事務仍然可以照常進行。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗