使用axis的stub生成webservice客戶端程式碼
阿新 • • 發佈:2019-02-14
Axis2 提供了一個wsdl2java.bat 命令可以根據WSDL 檔案自動產生呼叫WebService 的程式碼。
在Windows 控制檯輸出如下的命令列來生成呼叫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外掛生成的程式碼是一樣的。