2010-11-02 12 views
17

Fondamentalement, il existe une application principale qui expose à la fois SOAP ainsi que les services RESTful.Puis-je utiliser Spring MVC et Spring WS en une seule application?

J'ai décidé d'utiliser Spring WS 1.5.8 pour les services SOAP et
Spring MVC 3.0 pour les services RESTful car cela est une nouvelle fonctionnalité. Après avoir lu un peu à propos de Spring WS (je suis nouveau à ce sujet!), Nous avons déclaré un "MessageDispatcherServlet" qui est un contrôleur frontal, dans web.xml pour Spring WS. Pour Spring MVC, nous devons déclarer un "DispatcherServlet" qui est également un contrôleur frontal, dans web.xml.

Pour les deux servlets, nous avons différentes déclarations de servlet dans web.xml.

dire pour le printemps WS J'ai

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

pour Spring MVC (RESTful) j'ai

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

donc je devrais utiliser 2 fichiers de configuration ?? un nommé springmvc-servlet.xml et un autre springsoap-servlet.xml?

Est-ce que cela peut être fait?

Répondre

17

Oui, c'est bien. Vous mettez les trucs liés à MVC dans un, et les trucs WS dans un autre.

Si elles ont besoin de partager des services, il est préférable de déclarer un contexte partagé en utilisant ContextLoaderListener dans web.xml, qui définit un troisième contexte qui devrait contenir les haricots communs (see docs for example of how to set this up).

Cela vaut également la peine que MessageDispatcherServlet est juste un assemblage pratique d'un DispatcherServlet standard plus quelques autres composants. Vous pouvez simplement déclarer ces composants vous-même et utiliser un DispatcherServlet, mais cela devient assez fastidieux.

+1

Merci! :) Je sais comment configurer un applicationContext.xml en utilisant ContextLoaderListener. –