windows下使用cmd命令提示符生成java webservice客戶端代碼,可以使用命令提示符直接生成客戶端代碼,直接導(dǎo)入到項目中,只需配置jdk即可,在jdk的bin文件夾下,按shift并點擊右鍵,選中“在此處打開命令窗口”
輸入命令如下:
1
|
wsimport -keep -p com.demo.client -d d:\\(存放的地址) http: //xx/account?wsdl(wsdl地址) |
命令參數(shù)說明:
-d:生成客戶端執(zhí)行類的class文件的存放目錄(默認存放在c:\users\administrator\)
-s:生成客戶端執(zhí)行類的源文件的存放目錄(默認存放在c:\users\administrator\)
-p:定義生成類的包名
圖示:
上面代碼是在d盤下生成java代碼,-d代表的是生成class文件和java文件,圖示:
如果把這里的-d改為-s,生成的只有java文件,圖示:
文件里面包名都是我們可以指定的,如果沒有指定,使用的就是根據(jù)wsdl文檔里面的targetnamespace來命名。
共勉:這個時代會犒賞那些愛學(xué)習(xí)的人。
補充:利用wsdl地址生成java客戶端調(diào)用類并實現(xiàn)動態(tài)配置的方法
前言:
有時,我們經(jīng)常要和一些外部系統(tǒng)對接,如果是http接口還好,直接用apache的httpclient工具類調(diào)用即可。而如果對方系統(tǒng)是webservice,則比較麻煩,本文主要講解如何用對方的wsdl地址生成java客戶端調(diào)用類并且動態(tài)配置訪問地址并在java中使用
1,首先我們先要獲取對方的wsdl地址,例如
1
|
http: //xxxx/xxxx/xxxx.asmx?wsdl |
2, 接著,在cxf官網(wǎng)上下載apache-cxf-3.2.5
2.1,將apache-cxf-3.2.5解壓縮后安裝在d:\\apache-cxf-3.2.5中,設(shè)置cxf_home環(huán)境變量為d:\\ apache-cxf-3.2.5
如下圖所示:
2.2,運行cmd,執(zhí)行命令wsdl2java,等待大概1秒鐘,出現(xiàn)usage證明設(shè)置成功
2.3,用wsdl地址執(zhí)行命令:其中-d代表輸出路徑,后面緊跟著路徑,路徑后面緊跟著地址,按回車鍵,生成成功!
3,生成成功后
由于wsdl是寫死在生成的java類的注解中的,有時我們會使用多套環(huán)境進行測試,驗證,而sit和uat環(huán)境的wsdl地址是不盡相同的。此時,我們需要動態(tài)配置wsdl的地址和命名空間的地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
@component public class debitpushclient implements initializingbean { private static url wsdlurl; private static string debitwsdlurl; private static string uri; private static qname service_name; public static httpresult pushdebitdata(string jsondata) { financialsharing ss = new financialsharing(wsdlurl, service_name); return (httpresult) webserviceclientutil.invokewebservicesoapaction(ss, new qname(uri, "financialsharingsoap12" ), financialsharingsoap. class , "pushdebitdata" , jsondata); } /** * 初始化wsdl連接地址 */ private void initwsdlurl() { url url = null ; try { wsdlurl = new url(debitwsdlurl); } catch (malformedurlexception e) { java.util.logging.logger.getlogger(financialsharing. class .getname()) .log(java.util.logging.level.info, "can not initialize the default wsdl from {}" , debitwsdlurl); } } /** * 從配置文件中讀取wsdl地址 * @param debitwsdlurl 地址 */ @value ( "${my.dfdk.wsdl.url:http://xxx.xxx.asmx?wsdl}" ) public void setdebitwsdlurl(string debitwsdlurl) { debitpushclient.debitwsdlurl = debitwsdlurl; } /** * 從配置文件中讀取命名空間地址 * @param uri 命名空間地址 */ @value ( "${my.dfdk.wsdl.namespace.uri:http://tempuri.org/}" ) public void seturi(string uri) { debitpushclient.uri = uri; } /** * 初始化wsdl * @throws exception */ @override public void afterpropertiesset() throws exception { initwsdlurl(); service_name = new qname(uri, "financialsharing" ); } } |
4,客戶端調(diào)用,調(diào)用成功后,即可獲取正確的響應(yīng)結(jié)果,不需要再將xml轉(zhuǎn)成java對象
這篇文章,只是簡單介紹了用wsdl地址生成java客戶端調(diào)用代碼的一種方法,除此之外,還可以用maven plugin
cxf-codegen-plugin
生成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<build> <finalname>cxf-date</finalname> <plugins> <plugin> <groupid>org.apache.cxf</groupid> <artifactid>cxf-codegen-plugin</artifactid> <version>${cxf.version}</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <sourceroot>src/main/resources/cxf</sourceroot> <wsdloptions> <wsdloption> <wsdl>http: //localhost:8080/cxf-date/services/bookservice?wsdl</wsdl> <frontend>jaxws21</frontend> <faultserialversionuid> 1 </faultserialversionuid> </wsdloption> </wsdloptions> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin> </plugins> </build> |
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。如有錯誤或未考慮完全的地方,望不吝賜教。
原文鏈接:https://blog.csdn.net/wenzhi20102321/article/details/68484354