【问题标题】:Can I use Spring MVC and Spring WS in one single application?我可以在一个应用程序中使用 Spring MVC 和 Spring WS 吗?
【发布时间】:2011-05-03 23:44:22
【问题描述】:

基本上有一个后端应用程序同时公开 SOAP 和 RESTful 服务。

我决定使用 用于 SOAP 服务的 Spring WS 1.5.8,以及
Spring MVC 3.0 用于 RESTful 服务,因为这是一项新功能。

在阅读了一些关于 Spring WS 的信息后(我是新手!),我们必须在 Spring WS 的 web.xml 中声明一个“MessageDispatcherServlet”,它是一个前端控制器。

对于 Spring MVC,我们应该在 web.xml 中声明一个“DispatcherServlet”,它也是一个前端控制器。

对于这两个 servlet,我们在 web.xml 中有不同的 servlet 声明。

即对于 Spring WS,我有

  <servlet>
  <servlet-name>springsoap</servlet-name>
  <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
  <servlet-name>springsoap</servlet-name>
  <url-pattern>/soapservices/*</url-pattern>
  </servlet-mapping>

对于 Spring MVC (RESTful) 我有

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/restservices/*</url-pattern>
    </servlet-mapping>

因此我应该使用 2 个配置文件??一个名为 springmvc-servlet.xml 另一个名为 springsoap-servlet.xml ?

这个可以吗?

【问题讨论】:

    标签: spring-mvc spring-ws


    【解决方案1】:

    是的,这很好。你把 MVC 相关的东西放在一个里面,把 WS 的东西放在另一个里面。

    如果他们需要共享服务,那么最好在web.xml 中使用ContextLoaderListener 声明一个共享上下文,它定义了应该包含共享bean (see docs for example of how to set this up) 的第三个上下文。

    MessageDispatcherServlet 只是标准DispatcherServlet 加上一些其他组件的方便组装,这也毫无价值。您可以自己声明这些组件并使用DispatcherServlet,但这会变得相当繁琐。

    【讨论】:

    • 谢谢! :) 我知道如何使用 ContextLoaderListener 设置 applicationContext.xml..
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 2020-06-04
    • 2016-09-24
    • 2018-05-02
    相关资源
    最近更新 更多