【问题标题】:Spring Boot SOAP webservice with MVC带有 MVC 的 Spring Boot SOAP Web 服务
【发布时间】:2015-03-10 10:44:03
【问题描述】:

我想结合 Spring 指南中的两个 Spring (spring-boot) 应用程序:

很遗憾,这些示例不能一起使用。 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 dispatcher 才能正常工作?

我想要:

  • localhost:8080/ws/* - 网络服务
  • localhost:8080/web/* - MVC 组件

提前致谢!

【问题讨论】:

  • 将方法重命名为messageDispatcherServlet而不是dispatcherServlet,后者会覆盖默认配置的DispatcherServlet
  • 非常感谢!!!它正在工作

标签: java spring spring-mvc spring-boot spring-ws


【解决方案1】:

问题在于MessageDispatcherServlet 的注册,因为名称dispatcherServlet 覆盖了Spring Boot 注册的DispatcherServlet。您网站的 MVC 部分需要后者。

要修复它,只需将您的方法重命名为 dispatcherServlet 以外的任何名称,例如 messageDispatcherServlet

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

【讨论】:

  • @m-deinum 我有一个类似的 MessageDispatcherServlet,但它被配置为使用 '/*' url 模式。我想添加一个 MVC servlet,它将回复“/ui”模式。我可以向 MessageDispatcherServlet 添加过滤器或其他东西,以便它首先检查“/ui”模式并委托,否则它将请求作为标准 SOAP 消息处理。谢谢
  • 为什么需要过滤器? servlet 容器会为您处理这个问题,只需将服务器映射到正确的模式即可。
猜你喜欢
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多