因爲項目的歷史緣由,webservice服務端是乙方公司開發的,咱們本身開發的系統須要去調用乙方公司的webservice接口。前面用了網上提供的一種方法(非生成代理類),怎麼也調用不成功(也許是由於服務端的wsdl的版本過低),開始還覺得乙方公司接口的問題,後來用.net試了一下,直接調用成功,說明接口沒有問題。java
後來通過思考,仍是採用生成代理類的方法來調用,剛開始用cxf,下載完cxf壓縮包,用wsdl2java.bat生成java代理類,結果直接報錯:WSDLToJava Error:Rpc/encoded wsdls are not supported with CXF,網上一查是由於服務端的wsdl版本太老(服務端是用axis)。web
無奈只好放棄cxf,改用axis,下載axis1.4版本http://mirror.bit.edu.cn/apache/axis/ apache
注意:若是服務端wsdl比較老的話,請下載低版本,不要下載axis2函數
下載完後,在F:\axis-bin-1_4\axis-1_4\lib下建一個如下的bat文件:.net
set Axis_Lib=f:\axis-bin-1_4\axis-1_4\lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Axis_Servlet=http://host:5080/xxxx/services/xxxService?wsdl %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -u %Axis_Servlet%
雙擊以後,該文件,自動生成java的代理類,生成以後,建一個main函數調用:代理
public static void main(String[] args) throws Exception { Object[] pas = new Object[2]; pas[0] = "2"; pas[1] = "xxxx"; MapWebServiceServiceLocator ms = new MapWebServiceServiceLocator(); MapWebService client=ms.getMapWebService(); Object a = client.unsafeInvokeService("方法名", pas); System.out.println(a.toString()); }
這樣就能夠調用成功了!!!code
所需的包,pom.xmlxml
<dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>commons-discovery</groupId> <artifactId>commons-discovery</artifactId> <version>0.2</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis-jaxrpc</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis-saaj</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.4</version> </dependency>