首页 > 解决方案 > Spring 引导 MessageDispatcherServlet 覆盖 DispatcherServlet。如何跳过覆盖并注册两个 DispatcherServlet?

问题描述

在单个应用程序中,我尝试使用肥皂以及休息网络服务。每个 servlet 都有不同的 URI,下面是 config 类的代码。

问题是:只有soap 服务URL 工作正常,其余的则出现405 错误。

@EnableWs
@Configuration
public class WebServiceConfig {

    @Bean
    public ServletRegistrationBean RsRegistrationBean(ApplicationContext applicationContext) {
        DispatcherServlet servlet = new DispatcherServlet();
        servlet.setApplicationContext(applicationContext);
        return new ServletRegistrationBean(servlet,"/rest/*");
    }

 @Bean
 public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(
      ApplicationContext context) {
    MessageDispatcherServlet messageDispatcherServlet = new MessageDispatcherServlet();
    messageDispatcherServlet.setApplicationContext(context);
    messageDispatcherServlet.setTransformWsdlLocations(true);
    return new ServletRegistrationBean<>(messageDispatcherServlet,"/");
  }
}

标签: springspring-bootspring-mvc

解决方案


删除您的WebServiceConfig类,因为两者都已由 Spring Boot 自动配置(从 Spring Boot 1.4 开始)。将以下内容添加到您的application.properties

spring.mvc.servlet.path=/rest
spring.webservices.path=/

现在您可以利用 Spring Boot 提供的基础设施,而不是与之抗争。


推荐阅读