代码之家  ›  专栏  ›  技术社区  ›  sva605

Spring Boot:独立的WS和MVC请求处理

  •  0
  • sva605  · 技术社区  · 6 年前

    (不工作):

    @Configuration
    public class WebServicesConfiguration extends WsConfigurerAdapter implements WebApplicationInitializer {
    
        @Bean
        public ServletRegistrationBean messageDispatcherServlet(ApplicationContext context) {
            MessageDispatcherServlet servlet = new MessageDispatcherServlet();
            servlet.setApplicationContext(context);
            servlet.setTransformWsdlLocations(true);
    
            return new ServletRegistrationBean(servlet, "/*");
        }
    
        @Bean
        public SimpleUrlHandlerMapping simpleUrlHandlerMapping() {
            SimpleUrlHandlerMapping handler = new SimpleUrlHandlerMapping();
            handler.setDefaultHandler("mvc");
    
            return handler;
        }
    
        @Override
        public void onStartup(ServletContext servletContext) {
            DispatcherServlet ds = new DispatcherServlet(new GenericWebApplicationContext());
            ServletRegistration.Dynamic appServlet = servletContext.addServlet("mvc", ds);
            appServlet.addMapping("/dummy");
        }
    }
    

    '/*' 地图绘制。本例中的MVC使用 '/dummy' SimpleUrlHandlerMapping 将MVC请求路由到MVC dispatcher servlet,但没有帮助。不允许更改WS的映射。

    P、 上面有个错误。WS映射为“/”

    1 回复  |  直到 6 年前
        1
  •  0
  •   sva605    6 年前

    找到了解决方案。我在引导类的注释中添加了以下排除

    @SpringBootApplication(exclude = DispatcherServletAutoConfiguration.class)
    

    并按以下方式更改了WebServicesConfiguration类:

    @Configuration
    public class WebServicesConfiguration extends WsConfigurerAdapter {
    
        @Bean
        public ServletRegistrationBean mvcDispatcherServlet(ApplicationContext context) {
            DispatcherServlet servlet = new DispatcherServlet();
            servlet.setApplicationContext(context);
    
            return new ServletRegistrationBean(servlet, "/dummy");
        }
    
        @Bean
        public ServletRegistrationBean messageDispatcherServlet(ApplicationContext context) {
            MessageDispatcherServlet servlet = new MessageDispatcherServlet();
            servlet.setApplicationContext(context);
            servlet.setTransformWsdlLocations(true);
    
            return new ServletRegistrationBean(servlet, "/");
        }
    }