Publié par

Il y a 9 années -

Temps de lecture 1 minute

Spring Flex BlazeDS Integration

Récemment, lors d’une intervention sur une application Flex, j’ai été confronté à un problème de migration d’une version de la librairie Spring BlazeDS Integration (passage de la version 1.0.0.RC2 à 1.0.0.M2). Cette librairie permet la configuration de BlazeDS à travers Spring de façon simplifiée. J’ai voulu configurer un appel à un service Java en Remoting.

Afin de déclarer votre service Remote, les lignes suivantes doivent être ajoutées dans votre applicationContext.xml :


	
	    
	        /*=mySpringManagedMessageBroker
	    
	






	





Ainsi que la référence au fichier xsd : http://www.springframework.org/schema/flex/spring-flex-1.0.xsd

Malheureusement, au démarrage de votre application, vous aurez cette erreur :

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 67 in XML document from ServletContext resource [/WEB-INF/classes/applicationContext-service.xml] is invalid; 
        nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'flex:remoting-destination'.
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)

Pourtant cela fonctionnait parfaitement avec les versions précédentes de Spring BlazeDS Integration …

Je regarde donc le fichier xsd sur lequel se base mon applicationContext (http://www.springframework.org/schema/flex/spring-flex-1.0.xsd), et le remoting-destination est bien présent… étrange. Je regarde également la documentation du projet et d’après cette dernière, ma configuration est bonne … le mystère s’épaissit.

Après quelques recherches, j’ai l’idée de regarder le xsd du jar de Spring BlazDS Integration (org.springframework.flex-1.0.0.M2.jar). Et eureka, je trouve l’explication : le xsd du jar n’est pas le même que celui vers lequel pointe mon applicationContext… Au chargement de l’application, c’est le xsd du jar qui est recherché… De plus, je me rends compte que cette version a subi un peu de refactoring et certains chemins ont été modifiés.
Par conséquent, vous devez déclarer votre service Remote de cette manière :


  
	   
	       /*=mySpringManagedMessageBroker
	   
  






	





Vous remarquerez que remoting-destination et destination-id sont devenus remote-service et service-id et que les chemins des classes MessageBrokerHandlerAdapter et MessageBrokerFactoryBean ont changé.

Néanmoins, une solution plus rapide consiste à effectuer une montée de version vers la 1.0.0.RELEASE de Spring BlazeDS Integration. En effet, le fichier xsd ainsi que les chemins ont été remis comme la version RC2, posant ainsi moins de problèmes.

En espérant que cette solution puisse aider d’autres personnes !

Publié par

Publié par Nicolas Jozwiak

Nicolas est delivery manager disposant de 12 ans d’expérience en conception et développement. Son parcours chez un éditeur avant son entrée chez Xebia lui a notamment permis de développer de solides compétences dans le domaine de la qualité et de l’industrialisation (tests, intégration continue, gestion de configuration, contrôle qualité). Bénéficiant d’une expérience très solide de mise en place des méthodes agiles et d’accompagnement d’équipes sur le terrain, il s’attache à mettre à profit quotidiennement son expérience qui est reconnue pour son approche pragmatique, proactive et pédagogique.

Commentaire

2 réponses pour " Spring Flex BlazeDS Integration "

  1. Publié par , Il y a 9 années

    Merci pour votre article !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Xebian, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.