Springboot使用CXF進行WSDL轉(zhuǎn)換及WebService服務調(diào)用過程
在開發(fā)過程中,對接比較老的系統(tǒng)經(jīng)常需要將 WSDL 文件轉(zhuǎn)換為 Java 代碼以便與 Web 服務進行交互。Apache CXF 提供了便捷的方式來完成這一任務。
本文將詳細介紹如何使用 CXF 添加相關依賴,并通過兩種方法將 WSDL 文件轉(zhuǎn)換為 Java 代碼。最后,我們將展示如何調(diào)用生成的 WebService 服務接口。
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插件實現(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)換為下圖這種(其中get set都是方法)

3.這是轉(zhuǎn)換后的webService類
其中name是Web Service的本地名稱,targetNamespace指定了Web Service的目標命名空間,wsdlLocation指定了WSDL文檔的位置,serviceName是WSDL中定義的服務的名稱,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這個方法
找到要調(diào)用的方法名,把參數(shù)傳進去(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 服務接口。
無論是通過批處理命令還是使用 Maven 插件,CXF 都提供了靈活且強大的工具來簡化這一過程。
總結(jié)
希望本文能幫助你在實際項目中更高效地進行 Web 服務開發(fā)和集成。
以上為個人經(jīng)驗,給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java Map轉(zhuǎn)Object與Object轉(zhuǎn)Map實現(xiàn)代碼
這篇文章主要介紹了 java Map轉(zhuǎn)Object與Object轉(zhuǎn)Map實現(xiàn)代碼的相關資料,需要的朋友可以參考下2017-02-02
Spring Boot集成tablesaw插件快速入門示例代碼
Tablesaw是一款Java的數(shù)據(jù)可視化庫,數(shù)據(jù)解析庫,主要用于加載數(shù)據(jù),對數(shù)據(jù)進行操作(轉(zhuǎn)化,過濾,匯總等),類比Python中的Pandas庫,本文介紹Spring Boot集成tablesaw插件快速入門Demo,感興趣的朋友一起看看吧2024-06-06
spring-data-jpa實現(xiàn)增刪改查以及分頁操作方法
下面小編就為大家分享一篇spring-data-jpa實現(xiàn)增刪改查以及分頁操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02

