带有 MVC 的 Spring Boot SOAP Web 服务
Posted
技术标签:
【中文标题】带有 MVC 的 Spring Boot SOAP Web 服务【英文标题】:Spring Boot SOAP webservice with MVC 【发布时间】:2015-03-10 10:44:03 【问题描述】:我想结合 Spring 指南中的两个 Spring (spring-boot) 应用程序:
https://spring.io/guides/gs/serving-web-content/ https://spring.io/guides/gs/producing-web-service/很遗憾,这些示例不能一起使用。 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
。
非常感谢!!!它正在工作
【参考方案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 容器会为您处理这个问题,只需将服务器映射到正确的模式即可。以上是关于带有 MVC 的 Spring Boot SOAP Web 服务的主要内容,如果未能解决你的问题,请参考以下文章
带有 Spring MVC 的 Vaadin 8 Spring Boot QuickTickets 仪表板
带有 Spring Boot 和 thymeleaf 的 Spring MVC 4 - i18n 无法正常工作
gradle + spring MVC + spring boot + jsp = 404错误?