Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
enseignement:tp:sw:servicemix:2013 [2013/10/29 13:27]
ecoquery créée
enseignement:tp:sw:servicemix:2013 [2013/10/31 10:00]
ecoquery [Démarrage]
Ligne 1: Ligne 1:
-====== TP ServiceMix / Camel ======+====== TP Camel  ====== 
 + 
 +Ce TP n'est pas à rendre, mais sera utile pour le projet TIW5 à venir. 
 + 
 +===== Démarrage ===== 
 + 
 +Récupérer FuseIDE ([[http://liris.cnrs.fr/~ecoquery/files/FuseIDE-6.0.0.129-win32.win32.x86.zip|windows]]/[[http://liris.cnrs.fr/~ecoquery/files/FuseIDE-6.0.0.129-linux.gtk.x86.zip|linux]]([[http://liris.cnrs.fr/~ecoquery/files/FuseIDE-6.0.0.129-linux.gtk.x86_64.zip|64bits]])/[[http://liris.cnrs.fr/~ecoquery/files/FuseIDE-6.0.0.129-macosx.cocoa.x86_64.zip|mac]]). Il s'agit d'une version pré-configurée d'eclipse intégrant des plugins pour l'édition de routes camel. Changer le workspace au besoin. 
 +Rmq: Il est possible d'importer vous projets TIW5 dans cet IDE.  
 +===== Premières routes Camel ===== 
 + 
 +Créer un nouveau projet Fuse de type ''camel-archetype-activemq''
 + 
 +Ouvrir le fichier ''src/main/resources/META-INF/spring/camel-context.xml''. Deux vues sont disponibles //Design// et //Source//
 + 
 +Après avoir manipulé un peu la vue design, basculer dans la vue source. Comprendre le code XML et s'aidant en particulier de la [[http://camel.apache.org/components.html|documentation sur les composants camel]]. 
 + 
 +Exécuter les routes en lançant le goal maven ''camel:run'' et vérifiez que le comportement effectif est bien celui que vous aviez compris. 
 + 
 +===== Exposer un service ===== 
 + 
 +Créer un nouveau projet Fuse de type ''camel-cxf-code-first''
 + 
 +Comme précédemment, analyser le contenu du fichier camel-context. Regarder également le fichier ''camel-cxt.xml''. Lancer le projet via maven -> ''camel:run''
 +Afficher le WSDL disponible ici: http://localhost:9000/order/?wsdl 
 + 
 +Tester avec SOAPUI. 
 + 
 +Stopper le projet, puis modifier les routes de façon à afficher produire un log entre chaque étape du traitement. Relancer le projet et tester avec SOAPUI. 
 +===== Route vers un service externe ===== 
 + 
 +Copier le WSDL du service livraison dans ''src/main/resources/wsdl''. Ajouter un ''cxfEndpoint'' qui pointe vers le wsdl l'interface Java sera générée via wsdl2java. Il est conseillé de créer un projet camel-cxf-contract-first pour s'aider dans la configuration des routes et du pom. Forcer le numéro de port à 9000 en changeant l'adresse du cxfEndpoint. 
 + 
 +Créer une route cxfEndpoint -> log -> cxfEndpoint -> log. 
 + 
 +Pour l'url du second endpoint, on utilisera l'url http du service livraison du TP3. Il suffit de copier/coller la définition du précédent cxfEndpoint en changeant le nom et l'adresse. Remarque: selon qu'un composant est utilisé en from ou en to, cxf se comportera soit en tant que service, soit en tant que client. 
 + 
 +Lancer la route. Lancer le service livraison du TP3. Tester avec SOAPUI en se connectant sur le bon point d'accès web (i.e. celui du port 9000) qui passe par la route camel. Vérifier le bon affichage des logs. 
 + 
 +===== Routage par le contenu et modification de message via un bean ===== 
 + 
 + 
 +Créer une classe java avec une méthode qui prend une date sous la forme d'un XMLGregorianCalendar et renvoie la même date, sauf si celle-ci est un samedi ou un dimanche auquel cas la date renvoyée est le lundi d'après. 
 + 
 +Modifier la route du service de livraison pour y intégrer ce bean après l'appel au service, mais uniquement pour les messages //confirmation//, les autres messages seront renvoyés directement. 
 + 
 +Tester dans SOAPUI après avoir éventuellement modifié le code du service de livraison pour renvoyer une date aléatoire, ou mieux: une date qui tombe un samedi ou un dimanche.