Springboot使用CXF进行WSDL转换及WebService服务调用过程

 更新时间:2025年09月24日 10:00:49   作者:筱诗诗  
本文介绍如何利用Apache CXF将WSDL转换为Java代码,提供bat命令和Maven插件两种方法,并详解生成类的属性(如name、targetNamespace)及调用接口的参数传递方式,助力高效集成Web服务

在开发过程中,对接比较老的系统经常需要将 WSDL 文件转换为 Java 代码以便与 Web 服务进行交互。Apache CXF 提供了便捷的方式来完成这一任务。

本文将详细介绍如何使用 CXF 添加相关依赖,并通过两种方法将 WSDL 文件转换为 Java 代码。最后,我们将展示如何调用生成的 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转java代码,这有两种方式

第一种,使用bat命令转换

wsimport -keep http://10.1.1.1:8080/webservice/111/service/webservice?wsdl

第二种,使用maven插件实现(版本尽量和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为这种格式,类似接口文档

转换为下图这种(其中get set都是方法)

3.这是转换后的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去调用getWebserviceHttpPort这个方法

找到要调用的方法名,把参数传进去(name,password,data),data是要传输的数据

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 文件转换为 Java 代码,并使用生成的类调用 Web 服务接口。

无论是通过批处理命令还是使用 Maven 插件,CXF 都提供了灵活且强大的工具来简化这一过程。

总结

希望本文能帮助你在实际项目中更高效地进行 Web 服务开发和集成。

以上为个人经验,给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mybatis实现分页的注意点

    Mybatis实现分页的注意点

    Mybatis提供了强大的分页拦截实现,可以完美的实现分功能。下面小编给大家分享小编在使用拦截器给mybatis进行分页所遇到的问题及注意点,需要的朋友一起看看吧
    2017-07-07
  • java Map转Object与Object转Map实现代码

    java Map转Object与Object转Map实现代码

    这篇文章主要介绍了 java Map转Object与Object转Map实现代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • Spring Boot集成tablesaw插件快速入门示例代码

    Spring Boot集成tablesaw插件快速入门示例代码

    Tablesaw是一款Java的数据可视化库,数据解析库,主要用于加载数据,对数据进行操作(转化,过滤,汇总等),类比Python中的Pandas库,本文介绍Spring Boot集成tablesaw插件快速入门Demo,感兴趣的朋友一起看看吧
    2024-06-06
  • Java设计模式之抽象工厂模式详解

    Java设计模式之抽象工厂模式详解

    这篇文章主要介绍了Java设计模式之抽象工厂模式详解,抽象工厂是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的、不同等级的产品的模式结构,需要的朋友可以参考下
    2023-09-09
  • 基于Java回顾之多线程同步的使用详解

    基于Java回顾之多线程同步的使用详解

    在这篇文章里,我们关注线程同步的话题。这是比多线程更复杂,稍不留意,我们就会“掉到坑里”,而且和单线程程序不同,多线程的错误是否每次都出现,也是不固定的,这给调试也带来了很大的挑战
    2013-05-05
  • Java如何对方法进行调用详解

    Java如何对方法进行调用详解

    今天给大家整理了Java如何对方法进行调用,文中有非常详细的介绍及代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • SpringCloud Feign客户端使用流程

    SpringCloud Feign客户端使用流程

    在springcloud中,openfeign是取代了feign作为负载均衡组件的,feign最早是netflix提供的,他是一个轻量级的支持RESTful的http服务调用框架,内置了ribbon,而ribbon可以提供负载均衡机制,因此feign可以作为一个负载均衡的远程服务调用框架使用
    2023-01-01
  • spring-data-jpa实现增删改查以及分页操作方法

    spring-data-jpa实现增删改查以及分页操作方法

    下面小编就为大家分享一篇spring-data-jpa实现增删改查以及分页操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Java之@TableField注解的用法解析

    Java之@TableField注解的用法解析

    MyBatis-Plus的@TableField注解用于控制实体类字段与数据库表字段的映射关系,支持字段映射、忽略、插入和更新控制、自定义填充策略和类型转换等
    2025-01-01
  • ActiveMQ简单入门(新手必看篇)

    ActiveMQ简单入门(新手必看篇)

    下面小编就为大家带来一篇ActiveMQ简单入门(新手必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06

最新评论