2010-10-29 6 views
3

J'ai une application Web Spring MVC qui fournit des services Web RESTful via une classe de contrôleur (annotée avec @Controller) qui a des méthodes mappées à des types de requêtes et des signatures spécifiques via des annotations @RequestMapping. J'ai essayé d'intégrer une destination de service BlazeDS dans le mixage en 1) ajoutant l'écouteur HttpFlexSession au fichier web.xml, 2) en ajoutant les déclarations flex: message-broker et flex: remoting-destination à mon contexte d'application Spring fichier de configuration, et 3) ajout d'un fichier générique /WEB-INF/flex/services-config.xml. Les étapes d'intégration BlazeDS ci-dessus semblent avoir arrosé mes services Web RESTful, en ce sens qu'il semble que les requêtes ne sont plus routées vers les méthodes du contrôleur. Il est même possible de faire cela, c'est-à-dire d'avoir une seule application web qui 1) traite les requêtes HTTP via les méthodes de contrôleur mappé et 2) traite les appels de méthode d'objets distants (depuis un client Flex) via un service BlazeDS ? Si oui, quelqu'un peut-il me dire ce que je peux faire de mal?Spring MVC: services Web RESTful + intégration BlazeDS possible dans la même application Web?

Merci d'avance pour votre aide.

Répondre

4

Oui, c'est possible, mais cela demande une petite configuration supplémentaire. Essentiellement, vous devez créer deux répartiteurs séparés, chacun avec un chemin différent.

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 
<servlet> 
    <name>flex</name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet> 
    <name>spring-mvc</name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>flex</servlet-name> 
    <url-pattern>/messagebroker/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>spring-mvc</servlet-name> 
    <url-pattern>/app/*</url-pattern> 
</servlet-mapping> 

demande alors à http://yourapp/app/somewhere sont acheminés vers Spring MVC, et les demandes à http://yourapp/messagebroker sont acheminés par BlazeDS.

En outre, vous aurez besoin de partager vos fichiers de contexte de printemps en trois:

  • un contexte commun (du nom applicationContext.xml dans l'exemple ci-dessus)
  • Un pour Spring MVC (nom spring-mvc-servlet.xml au-dessus exemple)
  • One for Flex (du nom flex-servlet.xml dans l'exemple ci-dessus)

Découvrez this section du Spr ing/BlazeDS docs pour plus d'informations.

Questions connexes