構建基於CXF的WebService服務(2)-- 利用CXF提供的wsdl2java工具建立客戶端
阿新 • • 發佈:2019-01-29
1、環境配置
將CXF_HOME/bin加入到環境變數path中,如我的是D:\Java\Jar\apache-cxf-2.7.7\bin
開啟cmd輸入 wsdl2java -v 出現如下資訊表示配置成功
2、wsdl2java的使用
(1)建立一個"Java Project"專案,暫且命名為client,將CXF用到的jar包引入進來,去掉jetty相關包,加入geronimo-jaxws_2.2_spec-1.1.jar包
(2)開啟命令列工具,將目錄切換到client專案中的src目錄下
(3)在cmd中輸入 wsdl2java http://localhost:8080/hello?wsdl 回車,稍等一會兒出現下面的畫面,表示建立成功
(4)在MyEclipse中選中專案,點選重新整理,就可以看到wsdl2java自動為我們建立的類了
(5)這時專案中有錯誤,是因為java自帶的包與geronimo-jaxws_2.2_spec-1.1.jar衝突導致的,這是需要調整一下jar的優先順序,讓專案優先載入我們自己匯入的包
(6)開啟專案目錄下的.classpath檔案將<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>移到我們引入的jar的最下面,然後再重新整理專案就可以了
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="lib" path="lib/asm-3.3.1.jar"/> <classpathentry kind="lib" path="lib/commons-codec-1.7.jar"/> <classpathentry kind="lib" path="lib/commons-collections-3.2.1.jar"/> <classpathentry kind="lib" path="lib/commons-lang-2.6.jar"/> <classpathentry kind="lib" path="lib/commons-logging-1.1.1.jar"/> <classpathentry kind="lib" path="lib/cxf-2.7.7.jar"/> <classpathentry kind="lib" path="lib/geronimo-servlet_3.0_spec-1.0.jar"/> <classpathentry kind="lib" path="lib/neethi-3.0.2.jar"/> <classpathentry kind="lib" path="lib/stax2-api-3.1.1.jar"/> <classpathentry kind="lib" path="lib/woodstox-core-asl-4.2.0.jar"/> <classpathentry kind="lib" path="lib/wsdl4j-1.6.3.jar"/> <classpathentry kind="lib" path="lib/xmlschema-core-2.0.3.jar"/> <classpathentry kind="lib" path="lib/geronimo-jaxws_2.2_spec-1.1.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="output" path="bin"/> </classpath>
3、建立客戶端
package com.tiamaes.webservice.client;
import com.tiamaes.webservice.test.impl.HelloWorldService;
/**
* <p>類描述: 客戶端呼叫程式碼</p>
* <p>修改人:王成委 </p>
* <p>修改時間:2014-5-12 上午09:29:21 </p>
* @version
*/
public class HelloWorldClient {
public static void main(String[] args) {
// TODO Auto-generated method stub
HelloWorldService serviceFactory = new HelloWorldService();
com.tiamaes.webservice.test.HelloWorldService service =
serviceFactory.getHelloWorldServiceImplPort();
String result = service.syaHello("Jaune");
System.out.println(result);
}
}
以上就是客戶端呼叫的程式碼,CXF自動生成的程式碼中HelloWorldService介面跟工廠類名稱相同,如果看著不爽可以自己改下。