如何在 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 {
}
结果:
localhost:8080/app-name/rest/content
结果为 HTTP 404。
localhost:8080/app-name/services/rest/content
显示 spring 消息 "No service was found."
所以,不知何故后者在 CXFServlet
的上下文中,并且找不到 REST 服务。
我必须更改什么才能使此设置正常工作?
顺便说一句:当我删除 ServletRegistrationBean
时,其余服务按预期工作。但这不是一个选择,因为我必须同时提供肥皂服务。
你的名为 dispatcherServletRegistration
的 bean 正在替换 Spring Boot 的默认 DispatcherServlet
所以你的左边只有一个 CXFServlet
而没有 DispatcherServlet
在你的应用程序中。
更新您的 bean 以将 CXFServlet
注册为如下内容:
@Bean
public ServletRegistrationBean cxfServletRegistration() {
return new ServletRegistrationBean(new CXFServlet(), "/services/*");
}
我正在提供一个 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 {
}
结果:
localhost:8080/app-name/rest/content
结果为 HTTP 404。localhost:8080/app-name/services/rest/content
显示 spring 消息"No service was found."
所以,不知何故后者在 CXFServlet
的上下文中,并且找不到 REST 服务。
我必须更改什么才能使此设置正常工作?
顺便说一句:当我删除 ServletRegistrationBean
时,其余服务按预期工作。但这不是一个选择,因为我必须同时提供肥皂服务。
你的名为 dispatcherServletRegistration
的 bean 正在替换 Spring Boot 的默认 DispatcherServlet
所以你的左边只有一个 CXFServlet
而没有 DispatcherServlet
在你的应用程序中。
更新您的 bean 以将 CXFServlet
注册为如下内容:
@Bean
public ServletRegistrationBean cxfServletRegistration() {
return new ServletRegistrationBean(new CXFServlet(), "/services/*");
}