1. CXF 根據WSDL生成客戶端代碼, 如果WSDL需要賬號密碼在哪填寫
你下載cxf後 在bin目錄下可以看到wsdl2java.bat這個工具(現在最新的版本可能已經沒有這個工具了 注意版本)
到這個目錄下後 wsdl2java -client wsdl路徑(可以是本地wsdl文件也可以是網路wsdl路徑)
默認在該文件夾下生成
也可以添加一下-p 生成路徑
例如wsdl2java -p com.test -client wsdl路徑
會生成一個com的文件夾test文件夾下面有代碼
2. 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(參數)這樣寫就行了。
3. 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..
目前可選擇的方案:
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代碼
@WebMethod
@WebResult(name="response")
(@WebParam(name="request")ValidateCCRequestrequest);
這個情況下定義的方法名,如果使用工具生成客戶端代碼,很可能存在Response沖突,因為定義的wsdl中會有一個關於介面方法的message
<wsdl:message name="validateCCResponse">
</wsdl:message>
方法名定義的message與介面定義返回的ValidateCCResponse,在工具生成客戶端代碼時就會產生命名沖突。
但是通過更改介面方法名為:
Java代碼
@WebMethod
@WebResult(name="response")
(@WebParam(name="request")ValidateCCRequestrequest);
即可解決該沖突,
4. 通過cxf的wsdl2java生成的java代碼裡面的註解能去掉嗎
您好,我來為您解答:
「基於 XML 的 Web Service 的 Java API」(JAX-WS)通過使用注釋來指定與 Web Service 實現相關聯的元數據以及簡化 Web Service 的開發。注釋描述如何將伺服器端的服務實現作為 Web Service 來訪問或者客戶端的 Java 類如何訪問 Web Service。
JAX-WS 編程標准支持將具有用於定義服務端點應用程序的元數據的 Java 類作為 Web Service 來注釋以及注釋客戶機可以如何訪問 Web Service。JAX-WS 支持使用基於 Metadata Facility for the Java Programming Language(Java 規范請求(JSR)175)規范和「用於 Java 平台的 Web Service 元數據」(JSR 181)規范的注釋,還可以使用由 JAX-WS 2.0(JSR 224)規范定義的注釋(包括 JAXB 注釋)。通過使用符合 JSR 181 標準的注釋,可以簡單地注釋服務實現類或服務介面,並且現在將應用程序作為 Web Service 來啟用。通過在 Java 源代碼中使用注釋可以簡化 Web Service 的開發和部署,因為會定義一些通常從部署描述符文件和 WSDL 文件中獲得的附加信息,或者會將元數據從 XML 和 WSDL 映射至源工件中。
使用注釋來配置綁定、處理程序鏈、埠類型的集合名稱、服務以及其他 WSDL 參數。注釋用於將 Java 映射至 WSDL 和模式,以及在運行時控制 JAX-WS 運行時處理和響應 Web Service 調用的方式。轉載,僅供參考。
如果我的回答沒能幫助您,請繼續追問。
5. 跪求一個最原始最通用的Java調用webservice的方法
再原始的也得先選個庫啊,jdk里本身又沒有訪問webservice的庫
比如commons-httpclient-3.1.jar里的HttpClient、xfire,axis,cxf等
比如,我一直是用cxf訪問webservice的(不考慮提供方語言,就算是.net提供的webservice也一樣)
CXF調用webservice步驟(我認為這個最簡單,因為不需要你寫代碼)
1、下載CXF,並將cxf的bin目錄加入到操作系統環境變數中(或者直接使用cmd命令進入CXF的bin文件夾)
2、將wsdl文件放到某個目錄下(如果沒有設置環境變數,則將此wsdl文件放入CXF的bin文件夾),執行命令wsdl2java -impl xxx.xml,則生成了符合wsdl要求的伺服器端代碼
3、在生成好的代碼里尋找xxx.xml,刪除或修改掉這些代碼即可(構造函數的URL屬性修改為http://形式的字元串,比如http://127.0.0.1/xxx?wsdl,其他部分出現的xxx.xml全部刪除)
運行命令WSDL2Java。
生成服務端代碼命令是WSDL2Javauriwsdl文件全路徑p包名dxmlbeanss,sssdssio生成的java代碼存放路徑。生成客戶端包代碼命令是WSDL2Java至uriwsdl文件全路徑p包名dxmlbeansso生成的java代碼存放路徑。
源碼就是指編寫的最原始程序的代碼。運行的軟體是要經過編寫的,程序員編寫程序的過程中需要他們的語言。音樂家用五線譜和音符,建築師用圖紙和筆,那程序員的工作的語言就是源碼了。
7. wsdl文件生成的java類怎麼用
根據wsdl文件生成webservice代碼下邊我們可以根據這個Axis2Demo.wsdl文件生成java代碼,這些代碼用於客戶端和伺服器端進行連接,也有客戶端的代碼。生成代碼的具體步驟如下:選擇菜單「File->New->Other」,從對話框中選取「Axis2Wizards」下面的「Axis2CodeGenerator」點擊Next下一步進入如下頁面:點擊Next下一步進入如下頁面:在該頁面選擇剛才建好的Axis2Demo.wsdl文件點擊Next下一步進入如下頁面:在上邊的圖中選中custom和GenrateAll注意:上圖中的Custompackagename是客戶端代碼的包名字這里把它改為:com.neusoft.axis2demo.client做為客戶端的包名。然後點擊Next下一步:進入如下圖在OoutputPath這項選中工程的根目錄作為這些自動生成代碼的目錄.然後點擊finish完成代碼生成工作.下圖為生成代碼後的工程目錄結構下邊介紹一下生成的代碼的用途其中包(1):com.neusoft.axis2demo.client是客戶端代碼,第三方使用的.(2):com.neusoft.axis2demo.services.xsd是第三方調用webservice的傳入參數和返回參數.(3):com.neusoft.axis2demo.common.xsd中的類是(2)的參數。其中第三方只需要調用com.neusoft.axis2demo.client中的Axis2DemoStub類中的nameConvertToContext方法就行了這個類的雛形是下邊這樣的。publiccom.neusoft.axis2demo.services.xsd.(com.neusoft.axis2demo.services.xsd.NameConvertToContextparam22)throwsjava.rmi.RemoteException{return(com.neusoft.axis2demo.services.xsd.NameConvertToContextResponse)object;//TODO}其中紅色部分是(2)包中的類他們作為參數傳入和返回,同時紅色的類中也有set和get方法用來存儲(3)com.neusoft.axis2demo.common.xsd包中的類.
8. 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的路徑。