使用cmd根據(jù)WSDL網(wǎng)址生成java客戶端代碼的實(shí)現(xiàn)
windows下使用cmd命令提示符生成java webservice客戶端代碼,可以使用命令提示符直接生成客戶端代碼,直接導(dǎo)入到項(xiàng)目中,只需配置jdk即可,在jdk的bin文件夾下,按Shift并點(diǎn)擊右鍵,選中“在此處打開命令窗口”
輸入命令如下:
wsimport -keep -p com.demo.client -d D:\\(存放的地址) http://XX/Account?wsdl(wsdl地址)
命令參數(shù)說(shuō)明:
-d:生成客戶端執(zhí)行類的class文件的存放目錄(默認(rèn)存放在C:\Users\Administrator\)
-s:生成客戶端執(zhí)行類的源文件的存放目錄(默認(rèn)存放在C:\Users\Administrator\)
-p:定義生成類的包名
圖示:

上面代碼是在D盤下生成java代碼,-d代表的是生成class文件和java文件,圖示:

如果把這里的-d改為-s,生成的只有java文件,圖示:

文件里面包名都是我們可以指定的,如果沒有指定,使用的就是根據(jù)WSDL文檔里面的targetNamespace來(lái)命名。

共勉:這個(gè)時(shí)代會(huì)犒賞那些愛學(xué)習(xí)的人。
補(bǔ)充:利用wsdl地址生成java客戶端調(diào)用類并實(shí)現(xiàn)動(dòng)態(tài)配置的方法
前言:
有時(shí),我們經(jīng)常要和一些外部系統(tǒng)對(duì)接,如果是HTTP接口還好,直接用apache的HttpClient工具類調(diào)用即可。而如果對(duì)方系統(tǒng)是Webservice,則比較麻煩,本文主要講解如何用對(duì)方的wsdl地址生成java客戶端調(diào)用類并且動(dòng)態(tài)配置訪問地址并在java中使用
1,首先我們先要獲取對(duì)方的wsdl地址,例如
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,運(yùn)行cmd,執(zhí)行命令wsdl2java,等待大概1秒鐘,出現(xiàn)USAGE證明設(shè)置成功

2.3,用wsdl地址執(zhí)行命令:其中-d代表輸出路徑,后面緊跟著路徑,路徑后面緊跟著地址,按回車鍵,生成成功!

3,生成成功后
由于wsdl是寫死在生成的java類的注解中的,有時(shí)我們會(huì)使用多套環(huán)境進(jìn)行測(cè)試,驗(yàn)證,而sit和uat環(huán)境的wsdl地址是不盡相同的。此時(shí),我們需要?jiǎng)討B(tài)配置wsdl的地址和命名空間的地址
@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對(duì)象
這篇文章,只是簡(jiǎn)單介紹了用wsdl地址生成java客戶端調(diào)用代碼的一種方法,除此之外,還可以用maven plugin
cxf-codegen-plugin
生成
<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>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- Java如何執(zhí)行cmd命令
- 解決Java執(zhí)行Cmd命令出現(xiàn)的死鎖問題
- Java執(zhí)行cmd命令的舉例與注意事項(xiàng)
- 詳解如何把cmd黑窗口把java文件打包成jar
- java如何連續(xù)執(zhí)行多條cmd命令
- Java 執(zhí)行CMD命令或執(zhí)行BAT批處理方式
- 解決IDEA和CMD中java命令提示錯(cuò)誤: 找不到或無(wú)法加載主類的問題
- Java執(zhí)行cmd命令兩種實(shí)現(xiàn)方法解析
- 解決java執(zhí)行cmd命令調(diào)用ffmpeg報(bào)錯(cuò)Concat error - No such filter ''[0,0]''問題
- cmd中javac和java使用及注意事項(xiàng)詳解
- Java調(diào)用windows系統(tǒng)的CMD命令并啟動(dòng)新程序
相關(guān)文章
最新jsonwebtoken-jwt 0.12.3 基本使用小結(jié)
這篇文章主要介紹了最新jsonwebtoken-jwt 0.12.3 基本使用小結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12
基于Java實(shí)現(xiàn)經(jīng)典蜘蛛紙牌游戲
《蜘蛛紙牌》(Ancient?Spider)?是由Oberon?Games開發(fā)的一款休閑益智類游戲。本文將利用Java語(yǔ)言實(shí)現(xiàn)這一經(jīng)典游戲,需要的可以參考一下2022-05-05
使用MQ消息隊(duì)列的優(yōu)缺點(diǎn)詳解
這篇文章主要介紹了使用MQ消息隊(duì)列的優(yōu)缺點(diǎn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Mybatis攔截器實(shí)現(xiàn)一種百萬(wàn)級(jí)輕量分表方案
這篇文章主要介紹了Mybatis攔截器實(shí)現(xiàn)一種百萬(wàn)級(jí)輕量分表方案,需要的朋友可以參考下2024-02-02

