wsdl2java
1. cxf中命令wsdl2java無法運行!
這個錯誤是報找不到jdk路徑,我之前是path全路徑配置的,也報這個錯誤,新建了一個JAVA_HOME,然後在path引用%JAVA_HOME%就可以找到了
2. eclipse上怎麼使用wsdl2java工具生成webservice客戶端
一、用Eclipse調用Axis的wsdl2java
1.在eclipse裡面新建一個液旦明搏項目或已有的項目;
2.導入
activation.jar
axis.jar
commons-discovery.jar
commons-logging-1.0.3.jar
jaxrpc.jar
saaj.jar
wsdl4j-1.5.2.jar
包鬧槐擾
3右擊你的工程-Run As-Run...-右擊New,新建 new configuration ,將Include libraries when searching for a main class勾上,再點search,輸入wsdl2java,再Arguments里把要生成的web service URI或wsdl文件寫進去,最後點run。
(轉自:http://www.blogjava.net/willpower88/archive/2006/11/22/82887.html)
二、利用myeclipse建立WebServiceClient
1.在Web工程上右鍵-->new-->Other-->MyEclipse下的WebService下的Web Service Client2.在打開窗口上的Project處選擇要放入哪個工程,然後選擇WSDL URL,把WebService地址填上.也可以選擇本地wsdl文件
3. 如何指定wsdl2java的參數
cd 調轉到 wsdl2java 所在目錄
然後輸入 wsdl2java --help
會出現提示信息
eg:
wsdl2java -p com.. -d src --compile -c bin -client yourWsdlURL
-p 指定生攔衫或成的客戶端包名
-d 指定生成的客戶端生成目錄
--compile 指定需要進行編譯
-c 指定編譯生成的目錄
-client 指定生成客戶端調用類, 即包含main方法調用客戶端方法的類簡伍
yourWsdlURL 是需要生成客戶端的wsdl地址
沒記錯的話應該就是這樣塌臘了
4. springmvc框架如何實現像webservice一樣通過wsdl2Java生成客戶端代碼
在用到web service時,如果是調用自己開發的web service還好,可以有一個方法的介面或參數對象實體類什麼的,但如果是調用第三方的服務,除了得到web service服務地址的wsdl文檔外,沒有任何實質性編碼的東西,寫原生調用太麻煩,這時就需要自己寫一個方法的介面類。
這個,目前已經有比較成熟的工具,可以自動生成,下面作一下簡單的介紹。
apache的wsdl2java工具,目前貌似CXF和axis各有一套,使用方式大同小異,但生成的代碼會有所區別,這時說的是CXF提供的wsdl2java工具。
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
一開始使用了CXF的這套工具,發現不是很方便,畢竟依賴CXF提供的工具jar包,個人不是很喜歡用。
後來發現JDK居然也自帶了對web service生成java代碼的功能,貌似1.6版本開始的,試用後發現效果十分不錯,果斷投入它的懷抱。下面作下簡單的介紹,以備忘。
打開jdk下的bin目錄 看下能否找到"wsimport.exe"這個文件
一般情況下都會有
如果沒有則說明你的JDK不支持這個功能
然後在DOS窗口下輸入wsimport 敲回車
如果提示錯誤的話 說明你的JDK環境變數還沒有配好
一句話總結,如果你在dos窗口下輸入wsimport正常,就可以
如果OK的話 輸入以下命令就可以將wsdl文件生成java文件了
wsimporthttp://127.0.0.1/TicketMobile/services/Cococ?wsdl -keep -p com.llg.ws2 -s g:/ws
參數說明
wsimport 這個是必須的 該工具的名稱
http://127.0.0.1/TicketMobile/services/Cococ?wsdl wsdl文件
-keep 是否生成源文件
-p com.llg.ws2 生成後的java包名
-s g:/ws 生成後放哪個目錄
但是前幾天,在對一個第三方提供的web service使用該工具生成java代碼的時候,居然出錯了,網上查找後終於找到原因。
使用cxf wsdl2java或javax wsimport工具的時候,可能會遇到關於生成的Response類文件名沖突的問題
Console代碼
WSDLToJavaError:ThrownbyJAXB:Aclass/interfacewiththesamename"***"isalreadyinuse..
@WebMethod
@WebResult(name="response")
(@WebParam(name="request")ValidateCCRequestrequest);
@WebMethod
@WebResult(name="response")
(@WebParam(name="request")ValidateCCRequestrequest);
目前可選擇的方案:
apache的wsdl2java工具,使用-autoNameResolution自動處理
wsdl2java -autoNameResolutionhttp://hello.joy2everyone.com/yourWebService?wsdl
JDK自帶的工具
wsimport -p com.test.client -keephttp://hello.joy2everyone.com/yourWebService?wsdl-B-XautoNameResolution
2.如果web service是己方開發的,可以修改代碼,使用自定義bindings,詳細可看sun webservice文檔
例如:
Java代碼
這個情況下定義的方法名,如果使用工具生成客戶端代碼,很可能存在Response沖突,因為定義的wsdl中會有一個關於介面方法的message
<wsdl:message name="validateCCResponse">
</wsdl:message>
方法名定義的message與介面定義返回的ValidateCCResponse,在工具生成客戶端代碼時就會產生命名沖突。
但是通過更改介面方法名為:
Java代碼
即可解決該沖突,
5. java2wsdl生成的客戶端代碼怎麼調用
首先, 你要先把你的WS服務啟動起來,就是 比如ht tp:/ /localhost:8080/Example/services/HelloWorldService?wsdl
然後在你的另一個項目中建一個Webservice Client 客戶端,用來訪問你的WS服務。
建立Webservice Client 方法如下,在Eclipses中建立一個java工程,然後在src上右鍵--NEW---Other---Web Service Client --Xfire--在WsdL url 中寫上htt p:/ /localhost:8080/Example/services/HelloWorldService?wsdl-----下一步結束。
在src里的會出現一些java文件,你找一個以Client結束的java文件,在裡面的main方法中會有個service對象,現在你就可以直接用這個對象了,service.peerstatus(參數)這樣寫就行了。
6. axis2使用wsdl2java的時候命令行報錯
jdk的環境碰皮變數沒配置。在數胡電腦的屬笑畢差性里配置環境變數。
java_home:jdk的安裝目錄;例如:C:\Program Files\Java\jdk1.7.0_17;
classpath:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;注意前面有個點。
path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
7. cxf的wsdl2java命令和JDK的wsimport命令的區別和使用
JDK提供了一個wsimport.exe的命令,主要是用於將WebService生成客戶端代碼,然後好調用WebService。
wsimport 是根據JDK1.6.0_21及以上的生成本地代碼的,它只能解析伺服器端的SOAP協議為1.1,不能解析SOAP1.2的協議。如果解析SOAP1.2 將會解析不完全。
用法:前提是已經將JDK配置為了path環境變數 C:\Documents and Settings\Administrator>wsimport -s F:\ -p com.client.jdk.wsimport http://localhost:1111/hello?wsdl
-s 後面指定生成文件的路徑,-p 自定義類包 http://localhost:1111/hello?wsdl 是wsdl的路徑。
CXF也提供了根據WSDL生成客戶端代碼的命令wsdl2java.exe 。它是根據jdk1.7生成的本地代碼,所以,需要對生成的代碼做一點點修改。
它可以支持SOAP1.1 和SOAP1.2的協議。前提是你已經下載了Apache CXF 並且將wsdl2java.exe配置為了path環境變數。
用法:C:\Documents and Settings\Administrator>wsdl2java -d F:\ -p com.client.cxf http://localhost:1111/hello?wsdl
-d 後面指定生成文件的路徑,-p 自定義類包 http://localhost:1111/hello?wsdl 是wsdl的路徑。
8. 如何使用CXF將 wsdl 文件變成java文件
用myeclipse將wsdl文件生成java代碼:
1、選擇新建的工程後,點擊右鍵,選擇「Run As」->「Run」,如下圖所示:
2、彈出如下窗口:
3、 在上圖中,左邊選擇「Java Application」後,點擊左上角的新增「」按鈕new configuration,頁面如下圖所示:
4、在上圖中,將「Include libraries when searching for a main class」 勾上,而後點擊「Main class」右邊的「Search」按鈕,彈出窗口如下圖所示:
5、在上圖中輸入WSDL2Java後,查找到axis這個jar包中對應類,點擊「OK」按鈕,此時主窗口如下圖所示:
6、在上圖中點擊「Arguments」頁簽,Arguments里把要生成的web service URI或wsdl文件寫進去,最後點run。在下圖中輸入的是wsdl文件的路徑: src/wsdl/acd_accessCode_interface.wsdl、src/wsdl/acd_accessCode_service.wsdl:
7、生成的java代碼如下: