2015-01-12 150 views
7

我想两个弹簧(弹簧引导)应用程序从春指南结合:春季启动SOAP Web服务与MVC

不幸的是,这些例子不工作一起。 servlet调度程序存在问题。添加dispatcherServlet bean - MVC servlet不工作(错误404)。

@Bean 
public ServletRegistrationBean dispatcherServlet(ApplicationContext applicationContext) { 
    MessageDispatcherServlet servlet = new MessageDispatcherServlet(); 
    servlet.setApplicationContext(applicationContext); 
    servlet.setTransformWsdlLocations(true); 
    return new ServletRegistrationBean(servlet, "/ws/*"); 
} 

如何配置servlet调度程序正常工作?

我想有:

  • localhost:8080/ws/* - webservice的
  • localhost:8080/web/* - MVC组件

提前感谢!

+3

将该方法重命名为'messageDispatcherServlet'而不是'dispatcherServlet',后者覆盖默认配置的'DispatcherServlet'。 –

+0

非常感谢!它正在工作 – jareks

回答

8

问题出在MessageDispatcherServlet由于名称dispatcherServlet的注册,它覆盖了Spring Boot注册的DispatcherServlet。后者是您的网站的MVC部分所必需的。

要解决它只是重命名您的方法,但dispatcherServletmessageDispatcherServlet

@Bean 
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) { 
    MessageDispatcherServlet servlet = new MessageDispatcherServlet(); 
    servlet.setApplicationContext(applicationContext); 
    servlet.setTransformWsdlLocations(true); 
    return new ServletRegistrationBean(servlet, "/ws/*"); 
}