20

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

我决定将 Spring WS 1.5.8 用于 SOAP 服务,将
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 ?

这可以做到吗?

4

2 回答 2

17

是的,这很好。您将与 MVC 相关的内容放在一个中,将 WS 的内容放在另一个中。

如果他们需要共享服务,那么最好使用ContextLoaderListenerin声明一个共享上下文web.xml,它定义了应该包含共享 bean 的第三个上下文(有关如何设置它的示例,请参见文档)。

MessageDispatcherServlet只是一个标准DispatcherServlet加上一些其他组件的方便组装也没有任何价值。您可以自己声明这些组件并使用 a DispatcherServlet,但这会变得非常繁琐。

于 2010-11-02T14:57:33.487 回答