1. 程式人生 > >使用axis的stub生成webservice客戶端程式碼

使用axis的stub生成webservice客戶端程式碼

 Axis2 提供了一個wsdl2java.bat 命令可以根據WSDL 檔案自動產生呼叫WebService 的程式碼。

wsdl2java.bat 命令可以在<Axis2 安裝目錄>"bin 目錄中找到。在使用wsdl2java.bat 命令之前需要設定

AXIS2_HOME 環境變數,該變數值是<Axis2 安裝目錄>。

   在Windows 控制檯輸出如下的命令列來生成呼叫WebService 的程式碼:
%AXIS2_HOME%\bin\wsdl2java -urihttp://localhost:8080/axis2/services/SimpleService?wsdl
 -p client -s src -o stub其中-url 引數指定了wsdl 檔案的路徑,可以是本地路徑,也可以是網路路徑。-p 引數指定了生成的Java 類的包名,-o 引數指定了生成的一系列檔案儲存的根目錄。在執行完上面的命令後,讀者就會發現在當前目錄下多了個stub 目錄,在."stub"src"client 目錄可以找到一個SimpleServiceStub.java 檔案,該檔案複雜呼叫WebService,讀者可以在程式中直接使用這個類,程式碼如下:

package com.mkyong.ws;

import com.mkyong.ws.HelloWorldImplServiceStub.GetHelloWorldAsString;
import com.mkyong.ws.HelloWorldImplServiceStub.SayHi1;

public class HelloWordServiceStub extends org.apache.axis2.client.Stub {
	 
	 public static void main(String[] args) throws Exception {
		 HelloWorldImplServiceStub stub = new HelloWorldImplServiceStub();
		 SayHi1 he = new SayHi1();
		 GetHelloWorldAsString gg = new GetHelloWorldAsString();
	  he.setArg0("mike");
	  he.setArg1("13");
	  gg.setArg0("jim");
	  System.out.println(stub.getHelloWorldAsString(gg).get_return());
	  System.out.println(stub.sayHi1(he).get_return());
	  System.out.println(10933);
	 }
}

輸出結果:
Hello World JAX-WS jim
mike,你好,you are 13 year(s) old . 現在時間是:Tue Jun 24 11:16:39 CST 2014
10933


     上面的程式碼大大簡化了呼叫WebService 的步驟,並使程式碼更加簡潔。但要注意的是,wsdl2java.bat 命令生成的Stub 類將WebService 方法的引數都封裝在了相應的類中,類名為方法名,例如,getGreeting 方法的引數都封裝在了GetGreeting 類中,要想呼叫getGreeting 方法,必須先建立GetGreeting 類的物件例項。生成的stub檔案與運用services.xml生成的.aar檔案在一個目錄下。

使用這個工具跟使用eclipse axis外掛生成的程式碼是一樣的。