1、 用Axis提供的WSDL2java工具類產生代碼,命令如下:
C:\SoftWare\tomcat-5.0.28\tomcat-5.0.28\webapps\AxisWebService\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -s http://localhost:8080/AxisWebService/services/HelloWorldWSDD?wsdl –o c:\
-s 是設定wsdl的路徑url和是當前物理硬碟上的wsdl檔案(可以將頁面上的wsdl的xml檔案另存新檔一份試試,也是可以的)
-o 是設定轉換的檔案的輸出目錄
上面的命令會生產伺服器端的實現代碼和用戶端的調用代碼。代碼檔案如下:
deploy、undeploy是發布、卸載WebService的wsdd檔案
HelloWorldWSDD是伺服器端代碼介面檔案,繼承了Remote介面,定義了getAge、sayHello方法
HelloWorldWSDDService是獲得當前Service執行個體的介面
HelloWorldWSDDServiceLocator實現了HelloWorldWSDDService介面,用戶端在調用當前WebService時候有用
HelloWorldWSDDSoapBindingImpl當前WebService介面HelloWorldWSDD的實現,需要自己實現方法的業務
HelloWorldWSDDSoapBindingStub看結尾的Stub就知道,這個可以完成用戶端的實現,用它就可以調用到WebService的方法
下面用WSDL2Java產生的程式碼調用WebService,注意你還得用dos命令將上面的服務通過deploy.wsdd發布出去。下面是調用代碼:
代碼
package localhost.AxisWebService.services.HelloWorldWSDD.clientimpl;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import localhost.AxisWebService.services.HelloWorldWSDD.HelloWorldWSDDServiceLocator;
import localhost.AxisWebService.services.HelloWorldWSDD.HelloWorldWSDDSoapBindingStub;
public class Client {
public static void main(String[] args) throws ServiceException, RemoteException, MalformedURLException {
String target = "http://localhost:8080/AxisWebService/services/HelloWorldWSDD";
HelloWorldWSDDServiceLocator service = new HelloWorldWSDDServiceLocator();
HelloWorldWSDDSoapBindingStub stub = new HelloWorldWSDDSoapBindingStub(new URL(target), service);
System.out.println(stub.getAge(22));
System.out.println(stub.getName("張三"));
}
}
用自動產生的程式碼完成用戶端調用比較簡單,如果你的WebService的實現版本是JAX-WS2.0就可以用MyEclipse的WebService外掛程式工具協助我們生產代碼,如:axis2就可以,下次會介紹Axis2.x的用法。