You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Apache CXF同时支持JaxWS SOAP与JaxRS REST服务问题咨询

问题1:同一项目可以同时使用Apache CXF实现RS和WS两类服务

你当前启动故障的核心原因是两类服务的路径冲突,加上手动配置和starter自动配置存在重叠,按以下步骤修改即可正常运行:

步骤1:修复路径冲突

你目前SOAP服务发布路径为/student,RS服务根路径设置为/,而RS接口的路径也是/student开头,CXF的Servlet无法区分同前缀的两类请求,直接触发冲突。
修改配置类中RS服务的根地址,增加单独前缀即可:

@Bean
public Server rsServer() {
    JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
    endpoint.setBus(bus);
    // 给RS服务单独设置根前缀,避免和SOAP路径冲突
    endpoint.setAddress("/api");
    endpoint.setServiceBeans(Arrays.asList(myRestService));
    endpoint.setProvider(new JacksonJaxbJsonProvider());
    return endpoint.create();
}

修改后两类服务的访问路径完全隔离:

  • SOAP服务路径:{cxf.path}/student 即 /service/student
  • RS服务路径:{cxf.path}/api/student/get 即 /service/api/student/get

步骤2(可选):用starter自动配置简化代码

如果不想手动编写RS服务的注册Bean,可以直接删除配置类中的rsServer方法,修改application.properties配置即可实现自动注册:

cxf.path=/service
cxf.jaxrs.component-scan=true
cxf.jaxrs.classes-scan-packages=com.example.rest
# 给RS服务设置单独根前缀
cxf.jaxrs.address=/api

问题2:使用Spring Boot原生REST实现方案更简便,且和CXF SOAP服务完全兼容

该方案不需要额外依赖CXF的RS starter,也不会出现路径冲突问题,配置成本更低,修改步骤如下:

步骤1:调整依赖

删除cxf-spring-boot-starter-jaxrs依赖,仅保留jaxws的starter即可。

步骤2:改造原有RS服务代码

将JAX-RS注解替换为Spring MVC原生注解:

package com.example.rest;

import com.example.domain.Student;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/student")
public class MyRestService {

    @GetMapping("/get")
    public Student getStudent() {
        return new Student("Saifur", "Rahman", "061240");
    }
}

步骤3:清理多余配置

删除配置类中的rsServer方法以及properties中所有和jaxrs相关的配置,原有SOAP服务的配置完全不需要改动。
修改后两类服务完全走独立的Servlet处理,互不影响:

  • SOAP服务路径:/service/student(走CXF Servlet)
  • 原生REST路径:/student/get(走Spring MVC DispatcherServlet)

内容的提问来源于stack exchange,提问作者Saifur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:27:04