如何在 spring REST servlet 旁边使用 CXF soap servlet?

How to use CXF soap servlet aside spring REST servlet?

我正在提供一个 soap 网络服务,采用 java 优先方法,因此为此使用 CXF。为了使其与 spring-boot 一起发布,我有以下调度程序 servlet:

@Bean
public ServletRegistrationBean dispatcherServletRegistration() {
    ServletRegistrationBean registration = new ServletRegistrationBean(new CXFServlet(), "/services/*");
    registration.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME);
    return registration;
}

这很好用,但我现在想提供 REST 服务。其余服务不应由 cxf 发布,但默认 spring 映射:

@RestConstroller
@RequestMapping("/rest/content")
public class MyServiceRest extends SpringBeanAutowiringSupport {

}

结果:

所以,不知何故后者在 CXFServlet 的上下文中,并且找不到 REST 服务。

我必须更改什么才能使此设置正常工作?

顺便说一句:当我删除 ServletRegistrationBean 时,其余服务按预期工作。但这不是一个选择,因为我必须同时提供肥皂服务。

你的名为 dispatcherServletRegistration 的 bean 正在替换 Spring Boot 的默认 DispatcherServlet 所以你的左边只有一个 CXFServlet 而没有 DispatcherServlet 在你的应用程序中。

更新您的 bean 以将 CXFServlet 注册为如下内容:

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