Springboot使用CXF進(jìn)行WSDL轉(zhuǎn)換及WebService服務(wù)調(diào)用過程
在開發(fā)過程中,對接比較老的系統(tǒng)經(jīng)常需要將 WSDL 文件轉(zhuǎn)換為 Java 代碼以便與 Web 服務(wù)進(jìn)行交互。Apache CXF 提供了便捷的方式來完成這一任務(wù)。
本文將詳細(xì)介紹如何使用 CXF 添加相關(guān)依賴,并通過兩種方法將 WSDL 文件轉(zhuǎn)換為 Java 代碼。最后,我們將展示如何調(diào)用生成的 WebService 服務(wù)接口。
1.添加依賴
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.5.8</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.5.8</version>
</dependency>
2.wsdl轉(zhuǎn)java代碼,這有兩種方式
第一種,使用bat命令轉(zhuǎn)換
wsimport -keep http://10.1.1.1:8080/webservice/111/service/webservice?wsdl
第二種,使用maven插件實(shí)現(xiàn)(版本盡量和cxf依賴版本一致)
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.5.8</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>src/main/resources/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>http://10.1.1.1:8080/webservice/111/service/webservice?wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
wsdl為這種格式,類似接口文檔

轉(zhuǎn)換為下圖這種(其中g(shù)et set都是方法)

3.這是轉(zhuǎn)換后的webService類
其中name是Web Service的本地名稱,targetNamespace指定了Web Service的目標(biāo)命名空間,wsdlLocation指定了WSDL文檔的位置,serviceName是WSDL中定義的服務(wù)的名稱,portName指定了WSDL中定義的端口的名稱。
@WebServiceClient(name = "webservice", targetNamespace = "http://service.xxx", wsdlLocation = "http://10.1.1.1:8080/webservice/111/service/webservice?wsdl")
public class Webservice
extends Service
{
private final static URL WEBSERVICE_WSDL_LOCATION;
private final static WebServiceException WEBSERVICE_EXCEPTION;
private final static QName WEBSERVICE_QNAME = new QName("http://service.xxx", "webservice");
static {
URL url = null;
WebServiceException e = null;
try {
url = new URL("http://10.1.1.1:8080/webservice/111/service/webservice?wsdl");
} catch (MalformedURLException ex) {
e = new WebServiceException(ex);
}
WEBSERVICE_WSDL_LOCATION = url;
WEBSERVICE_EXCEPTION = e;
}
public Webservice() {
super(__getWsdlLocation(), WEBSERVICE_QNAME);
}
4.我們需要使用webService去調(diào)用getWebserviceHttpPort這個(gè)方法
找到要調(diào)用的方法名,把參數(shù)傳進(jìn)去(name,password,data),data是要傳輸?shù)臄?shù)據(jù)
Webservice webservice = new Webservice();
WebservicePortType port = webservice.getWebserviceHttpPort();
String result = port.setHtInfo(checCmdUsername, checCmdPassword, data);
System.out.println("result: " + result);
if(result.contains("成功")){
log.info("---------------同步成功!---------------");
return true;
}else {
log.info("---------------同步失?。?--------------");
return false;
}
通過上述步驟,我們可以輕松地將 WSDL 文件轉(zhuǎn)換為 Java 代碼,并使用生成的類調(diào)用 Web 服務(wù)接口。
無論是通過批處理命令還是使用 Maven 插件,CXF 都提供了靈活且強(qiáng)大的工具來簡化這一過程。
總結(jié)
希望本文能幫助你在實(shí)際項(xiàng)目中更高效地進(jìn)行 Web 服務(wù)開發(fā)和集成。
以上為個(gè)人經(jīng)驗(yàn),給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 解決springboot整合cxf啟動報(bào)錯(cuò),原因是版本問題
- 解決springboot整合cxf-jaxrs中json轉(zhuǎn)換的問題
- SpringBoot使用CXF集成WebService的方法
- SpringBoot之HttpWebServiceMessageSenderBuilder用法詳解
- SpringBoot調(diào)用WebService接口的實(shí)現(xiàn)示例
- Java(Springboot)項(xiàng)目調(diào)用第三方WebService接口實(shí)現(xiàn)代碼
- SpringBoot調(diào)用WebService接口方法示例代碼
相關(guān)文章
如何把本地idea上的項(xiàng)目上傳到github上(推薦)
這篇文章主要介紹了如何把本地idea上的項(xiàng)目上傳到github上,本文通過圖文的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
SpringCloud通過MDC實(shí)現(xiàn)分布式鏈路追蹤
在DDD領(lǐng)域驅(qū)動設(shè)計(jì)中,我們使用SpringCloud來去實(shí)現(xiàn),但排查錯(cuò)誤的時(shí)候,通常會想到Skywalking,但是引入一個(gè)新的服務(wù),增加了系統(tǒng)消耗和管理學(xué)習(xí)成本,對于大型項(xiàng)目比較適合,但是小的項(xiàng)目顯得太過臃腫了,所以本文介紹了SpringCloud通過MDC實(shí)現(xiàn)分布式鏈路追蹤2024-11-11
詳解Java中Dijkstra(迪杰斯特拉)算法的圖解與實(shí)現(xiàn)
Dijkstra(迪杰斯特拉)算法是典型的單源最短路徑算法,用于計(jì)算一個(gè)節(jié)點(diǎn)到其他所有節(jié)點(diǎn)的最短路徑。本文將詳解該算法的圖解與實(shí)現(xiàn),需要的可以參考一下2022-05-05
Java?SE循環(huán)一些基本練習(xí)題總結(jié)
循環(huán)語句可以在滿足循環(huán)條件的情況下,反復(fù)執(zhí)行某一段代碼,這段被重復(fù)執(zhí)行的代碼被稱為循環(huán)體語句,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Java?SE循環(huán)一些基本練習(xí)題,需要的朋友可以參考下2024-03-03
Java文件處理之使用XWPFDocument導(dǎo)出Word文檔
最近因項(xiàng)目開發(fā)的需要,整理了一份用JAVA導(dǎo)出WORD文檔,下面這篇文章主要給大家介紹了關(guān)于Java文件處理之使用XWPFDocument導(dǎo)出Word文檔的相關(guān)資料,需要的朋友可以參考下2023-12-12
Java簡單實(shí)現(xiàn)農(nóng)夫過河問題示例
這篇文章主要介紹了Java簡單實(shí)現(xiàn)農(nóng)夫過河問題,簡單描述了農(nóng)夫過河問題的概念、原理并結(jié)合簡單實(shí)例形式分析了java解決農(nóng)夫過河問題的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
SpringBoot如何實(shí)現(xiàn)Tomcat自動配置
這篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)Tomcat自動配置,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下2021-03-03

