TP Camel

Ce TP n'est pas à rendre, mais sera utile pour le projet TIW5 à venir.

Démarrage

Récupérer FuseIDE (windows/linux(64bits)/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 vos 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 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.