我可以在一个应用程序中使用Spring MVC和Spring WS吗?
问题内容:
基本上,有一个后端应用程序同时公开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?
能做到吗?
问题答案:
是的,这很好。您将与MVC相关的内容放入一个,而将WS内容放入另一个。
如果他们需要共享服务,那么最好使用ContextLoaderListener
in
声明一个共享上下文web.xml
,它定义了第三个上下文,该上下文应包含共享bean(有关如何设置的示例,请参阅docs)。
MessageDispatcherServlet
仅仅方便地组装一个标准DispatcherServlet
和一些其他组件也一无是处。您 可以
自己声明这些组件并使用DispatcherServlet
,但这很不明智。