我可以在一个应用程序中使用Spring MVC和Spring WS吗?

时间:2010-11-02 14:45:47

标签: spring-mvc spring-ws

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

我决定使用 Spring WS 1.5.8用于SOAP服务,以及
Spring MVC 3.0 for 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>

for 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?

可以这样做吗?

2 个答案:

答案 0 :(得分:17)

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

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

DispatcherServlet只是标准DispatcherServlet加上一些其他组件的便捷装配,这也是值得的。您可以自己声明这些组件并使用{{1}},但这非常繁琐。

答案 1 :(得分:1)