CXF中 wsdl2java工具的使用方法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
下面是一個使用wsdl2java的例子:
C:\Users\Administrator>F:
F:\>cd misps2
F:\misps2>wsdl2java -d .
F:\misps2>
方法2:F:\phone>wsdl2java -d src -client http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
環境配置:
1、下載apache-cxf-2.6.2在環境變數中配置CXF_HOME ,在PATH中加入%CXF_HOME%\bin
2、輸入cmd 進入控制視窗,輸入wsdl2java看是否配置成功
3、參考它的文件看這個工具的具體引數的用法
wsdl2java用法:
wsdl2java -p com -d src -all aa.wsdl
-p 指定其wsdl的名稱空間,也就是要生成程式碼的包名:
-d 指定要產生程式碼所在目錄
-client 生成客戶端測試web service的程式碼
-server 生成伺服器啟動web service的程式碼
-impl 生成web service的實現程式碼
-ant 生成build.xml檔案
-all 生成所有開始端點程式碼:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
wsdl2java -p QueryHrEmployee -d e:\ -all http://10.70.158.127
:8080/axis2_14/services/QueryHrEmployee?wsdl
方法二:使用wsdl2java生成客戶端
1、需要 一個包:apache-cxf-2.6.1.gz
這個包裡有好多jar包,一定要下載下來。
將此包解壓,我是放在:E:\CXF\apache-cxf-2.6.1
2、將URL呼叫成功的頁面內容,另存為XML
3、在cmd中通過wsdl2java生成客戶端檔案
cd 進入apache-cxd-2.6.1\bin目錄
執行命名:
wsdl2java -p service.webservice.client.demo -d F:\MyDocuments\Java\ws\InterfaceControlApp\src -verbose "F:\demoForWebSerivce.xml"
解析
wsdl2java -p 包名 -d 生成檔案路徑 -verbose "wsdl檔案路徑"
然後再拷貝到專案裡
包名:檔案存放的包名,可以寫專案中包路徑
生成檔案路徑 :檔案存放路徑,可以直接寫專案路徑
wsdl檔案:在IE中執行服務端URL顯示的XML另存為XML檔案。
我是直接到專案路徑了,生成前:
生成後:
報錯處理:
4、寫MAIN呼叫
package common;
import javax.xml.ws.Service;
import service.webservice.client.demo.DemoForWebService;
import service.webservice.client.demo.DemoForWebServiceImplService;
import service.webservice.client.demo.User;
/**
* @author 作者 E-mail:
* @version 建立時間:2013-3-20 下午03:39:29
* 類說明
*/
public class TestWSClientByZBY {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Service service = Service.create(DemoForWebServiceImplService.SERVICE);
String endpointAddress = "http://127.0.0.1:8080/InterfaceControlApp/webservice/demoForWebService?wsdl";
service.addPort(DemoForWebServiceImplService.HTTPPort, javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
// DMSSender dms = service.getPort(DMSSender.class);
DemoForWebService dms = service.getPort(DemoForWebServiceImplService.HTTPPort,DemoForWebService.class);
User user;
try {
user = dms.getUserById("admin");
System.out.println(user.getXtczdm());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
在服務端的實現類中@WebService(endpointInterface = "service.webservice.DemoForWebService",targetNamespace="http://webservice.service/",portName="HTTP_Port")
成功後:
呼叫完成。
利用CXF wsdl2java生成java程式碼
2012-08-24 18:06:52| 分類:java| 標籤:|字號大中小訂閱
環境配置:
1、下載apache-cxf-2.6.2在環境變數中配置CXF_HOME ,在PATH中加入%CXF_HOME%\bin
2、輸入cmd 進入控制視窗,輸入wsdl2java看是否配置成功
3、參考它的文件看這個工具的具體引數的用法
wsdl2java用法:
wsdl2java -p com -d src -all aa.wsdl
-p 指定其wsdl的名稱空間,也就是要生成程式碼的包名:
-d 指定要產生程式碼所在目錄
-client 生成客戶端測試web service的程式碼
-server 生成伺服器啟動web service的程式碼
-impl 生成web service的實現程式碼
-ant 生成build.xml檔案
-all 生成所有開始端點程式碼:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
詳細用法見:http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html
http://blog.chinaunix.net/u2/73798/showart_2002108.html
http://hgoldfish.mysmth.net/2007/11/04/cxfceuuaaoathinaeoeie-2/
例項:wsdl2java -p com -d d:/src -client http://portal.emp.gome.inc/HOwebapp/Gome.OA.ProcessService/Service/ProcessService.asmx?wsdl
Apache CXF 是一個Service框架,他簡化了Service的建立, CXF實現了JAX-WS2.0規範,並通過了JAX-WS2.0 TCK; CXF和Spring無縫整合;CXF支援多種傳輸協議(HTTP, JMS, Corba等), 支援多種Binding資料格式(SOAP,XML,JSON等), 支援多種DataBinding資料型別(JAXB, Aegis) 。CXF基於Interceptor的架構,使得整個框架非常易於擴充套件。 二. 如何釋出並呼叫簡單的web service例項 2.1.下載:apache-cxf-2.1.1 http://cxf.apache.org/download.html 2.2. 新建java project ,並加入apache-cxf-2.0.7/lib所有包,編寫要釋出的web service 介面和實現 import javax.jws.WebService; @WebService public interface HelloWorld { public String sayHello(String text); } import javax.jws.WebService; @WebService(endpointInterface="test.HelloWorld") public class HelloWorldImpl implements HelloWorld { public String sayHello(String text) { return "Hello" + text ; } } @WebService 註解表示是要釋出的web 服務 name:用於Interface,屬對映到wsdl:portType element的name屬性。
targetNamespace:用於Interface和implement,如果不指定,預設會使用包名倒序做為wsdl名空間。 serviceName:用於implement,表示wsdl服務名。 portName:用於implement,表示wsdl:port 的name屬性。 endpointInterface:用於implement,指定Interface全名,包括包名。 2.3.釋出web service public class Server { protected Server() throws Exception { System.out.println("Starting Server"); HelloWorldImpl implementor = new HelloWorldImpl(); String address = " http://localhost:9000/helloWorld"; Endpoint.publish(address, implementor); } public static void main(String args[]) throws Exception { new Server(); System.out.println("Server ready..."); Thread.sleep(5 * 60 * 1000); System.out.println("Server exiting"); System.exit(0); } } 執行後,在瀏覽器中輸入 http://localhost:9000/helloWorld?wsdl將顯示這個web service的wsdl.說明web service釋出成功。 2.4.下面就開始建立一個客戶端程式,訪問這個web service, 同樣新建java project ,並加入apache-cxf-2.0.7/lib所有包,由於CXF已經提供wsdl轉化成java 的命令工具,所以建立一個build.xml,用來生成客戶端程式。Bulid.xml內容如下: <?xml version="1.0"?> <project name="cxf wsdl2java" basedir="."> <property name="cxf.home" location ="${basedir}/WebRoot/WEB-INF/"/> <path id="cxf.classpath"> <fileset dir="${cxf.home}/lib"> <include name="*.jar"/> </fileset> </path> <target name="cxfWSDLToJava"> <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true"> <arg value="-client"/> <arg value="-d"/> <arg value="src"/> <arg value=" http://localhost:9000/helloWorld?wsdl"/> <classpath> <path refid="cxf.classpath"/> </classpath> </java> </target> </project> 或者:配置環境變數%CXF_HOME%=E:/WebService/CXF/apache-cxf-2.1.1/apache-cxf-2.1.1(以我的目錄為例),並在PATH後加上;%CXF_HOME%/bin 在cmd命令列中輸入wsdl2java如果顯示其用法表示配置好了。 輸入:wsdl2java -d src - client http://localhost:9000/helloWorld?wsdl 其作用上面的build.xml作用一樣。 附加:wsdl2java用法: wsdl2java -p com -d src -all aa.wsdl -p 指定其wsdl的名稱空間,也就是要生成程式碼的包名: -d 指定要產生程式碼所在目錄 -client 生成客戶端測試web service的程式碼 -server 生成伺服器啟動web service的程式碼 -impl 生成web service的實現程式碼 -ant 生成build.xml檔案 -all 生成所有開始端點程式碼:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file. 詳細用法見: http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html 2.5.呼叫web service public class MyClient { public static void main(String[] argv) { HelloWorld hello = new HelloWorldImplService().getHelloWorldImplPort(); System.out.println(hello.sayHello("Tom") ); } } 注意:執行時,要一定先要釋出web sevice. 三. 參考資料 1.CXF 主頁: http://cxf.apache.org/ 2. CXF中文討論組: http://groups.google.com/group/cxf-zh 3. Web service: http://www.w3school.com.cn/webservices/index.asp
4. WSDL: http://www.w3school.com.cn/wsdl/index.asp
5. SOAP:http://www.w3school.com.cn/soap/index.asp ----------------------------------------------------------- 以上是參考資料,以下是自己的實踐----------------------------------------------------------------------------- 我在操作過程中,發現了一個方法的引數resultCode,以及另一個方法的voteCode都讓我誤操作定義為了錯誤的型別。 因此需要對 WSDL進行修改後,將其放置在:D:/test/0328目錄下面。 我按照上面的地址下載到二級制壓縮檔案 apache-cxf-2.3.3.zip以後要注意,不要下載包含有src的 例如: apache-cxf-2.3.3-src.tar.gz 解壓縮到D:/work/lib/apache-cxf-2.3.3 配置環境變數 CXF-HOME 為“D:/work/lib/apache-cxf-2.3.3” 增加 path “%CXF-HOME %bin” 後, 在cmd下執行 D:/>cd test D:/test>cd 0328 D:/test/0328>wsdl2java -frontend jaxws21 -p com.chinatelecom.jx.vote.inf.partner
*wsdl