====== TP ServiceMix ====== L'objectif de ce TP est de se familiariser avec un bus de services ([[http://servicemix.apache.org/|ServiceMix]]). Le projet de base pour tiw5 a été complété avec des projets de départ pour servicemix et ode: hg clone https://forge.univ-lyon1.fr/hg/inf2018m-2015-base Ce TP n'est pas noté, mais sert de base pour le [[enseignement:sw:projet:2015|projet TIW5]]. ===== Prise en main de ServiceMix ===== ServiceMix est un bus de services construit autour d'un architecture [[http://www.osgi.org/Main/HomePage|OSGi]] basée sur [[http://karaf.apache.org/|Karaf]]. [[http://www.apache.org/dyn/closer.lua/servicemix/servicemix-6/6.0.1/apache-servicemix-6.0.1.zip|Télécharger]] et décompresser ServiceMix. Lancer ServiceMix via la commande ''bin/servicemix''. Dans le shell ainsi ouvert: * Lister les bundles((modules OSGi)) via ''list'' * Afficher les 5 dernières entrées du log via ''display -n 5'' * Installer la console web via: ''feature:install webconsole''. La console web est maintenant disponible ici: http://localhost:8181/system/console (login karaf, mdp karaf). [[http://servicemix.apache.org/docs/6.x/users-guide/web-console.html|Doc]] * Lister les commandes disponibles via ''help'' Installer la //feature// ''camel-jetty''. Construire le projet ''smix-camel'' fourni et le déployer dans ServiceMix, soit via la commande ''install'', soit via la console web. Ce projet crée des routes [[http://camel.apache.org/|Camel]] Démarrer le bundle (e.g. depuis la console web), constater l'affichage puis arrêter le bundle. Regarder dans les [[http://localhost:8181/system/console/logs|logs]] et essayer de faire le lien entre ce qui se passe et ce qui a été défini dans le projet ''smix-camel'', en ne vous occupant pour le moment que de la premère route camel. ===== Pont vers un service ===== La deuxième route est un pont vers le service locService fourni dans le projet. Démarrer ce dernier via ''mvn tomcat7:run''. Créer un projet SOAPUI (ou réutilisez votre projet du [[enseignement:tp:sw:clients:2015|TP Clients]]). Dans SOAPUI, changer l'adresse du point d'accès pour passer par ServiceMix au lieu d'accéder directement à locService. Trouver la bonne URL dans la configuration de la seconde route Camel. Tester. [[http://camel.apache.org/components.html|Doc composants Camel]] Désactiver la route avec le timer dans le projet smix-camel. Ajouter un log à l'aller et au retour, avec des nom différents, du pont vers locService. Reconstruire puis redéployer((uninstall, install, start)) le bundle précédent. Il est possible d'effectuer un déploiement via copie de fichier dans le répertoire ''deploy'' de ServiceMix. Dans ce cas le bundle est démarré automatiquement. Il est désinstallé quand le jar est supprimé. Diviser la route en deux routes en utilisant un endpoint [[http://camel.apache.org/seda.html|seda]]. Redéployer et tester. ===== JMS ===== Utiliser un ''[[http://camel.apache.org/wire-tap.html|wire-tap]]'' pour envoyer, en plus du ''seda'' le message entrant sur une file JMS en plus (préférer le composant [[http://camel.apache.org/activemq.html|activemq]] en précisant ''karaf'' comme username et password pour la file JMS). Envoyer quelques messages, puis afficher le contenu de la file en utilisant:browse --amqurl tcp://localhost:61616 --user karaf --password karaf FOO.BARoù FOO.BAR est le nom de la file JMS utilisée.