首页 > 解决方案 > Spring Boot:带有 @RestController 的 Apache CXF SOAP 用于休息 ws

问题描述

我正在将 SOAP 和 REST 一起用于同一个应用程序。使用 @RestController 和使用 apache cxf 的 SOAP 休息 Web 服务。Rest ws 和soap 路径相同,例如: Rest: GET http://localhost:8080/ws/person SOAP: http://localhost:8080/ws/findPerson

为了配置 cxf servlet,我创建了以下方法

@Bean 
public ServletRegistrationBean cxfServletRegistration() {
                return new ServletRegistrationBean(new CXFServlet(), "/ws/*");  }

更改后 SOAP 服务运行良好,但 REST (@RestController) 停止工作,但如果我禁用 cxfServletRegistration() 方法,其余 WS 工作正常。

您能否提出任何解决方案让所有 WS 一起工作?

标签: spring-mvcspring-bootcxf

解决方案


你不能,因为每个 servlet 都必须“拥有”它的监听基本路径。尽管缺少显式注册,RestControllers 还是在基本路径上侦听(默认 /*) 你真的需要使用 @RestController 吗?CXF 通过 JAX-RS 支持 REST。

否则,我建议将您的 REST 和 SOAP 功能分开,例如在 /model/... 上有 REST,在 /api/... 上有 SOAP 或一些这样的分离。


推荐阅读