création de services et configuration du esb avec talendesb

Download Création de Services et Configuration du ESB avec TalendESB

If you can't read please download the document

Upload: lilia-sfaxi

Post on 22-May-2015

2.556 views

Category:

Documents


4 download

DESCRIPTION

Visitez http://liliasfaxi.wix.com/liliasfaxi

TRANSCRIPT

  • 1. Institut National des Sciences Appliques et de Technologie TunisieE-Services 2013-2014TP3- MISE EN PLACE DUN ESB AVEC TALEND ESB Dr. Lilia SFAXI Objectifs du TP : Cration de services web avec loutil Talend Open Studio for ESB, et configuration des routes dans Talend ESB

2. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESBI. Les outils Talend pour ESB I.1 Talend ESB Talend ESB est une solution lgre, robuste et modulaire pour la cration de services web scuriss ainsi que pour lintgration dapplications nouvelles ou existantes. Talend participe au dveloppement des composants ESB travers la communaut Apache. Il collabore avec un grand nombre de dveloppeurs de la communaut Apache et a fait plusieurs contributions aux projets Apache. Talend fournit: -Un courtier de messages haute performance.-Des options de dploiement flexibles-Des outils de dveloppement pour Eclipse-Une interface utilisateur pour lintgration et la mdiation dapplications-Support pour les services web SOAP et REST-La mdiation et le routage-Support pour le failover, le monitoring et la scuritLenvironnement dexcution standard de Talend ESB est un conteneur OSGi. Limplmentation OSGi fournie avec Talend ESB est Apache Karaf, avec Eclipse Equinox comme environnement dexcution OSGi. Elle fournit un conteneur lger dans lequel les diffrents composants et applications peuvent tre dployes.I.2 Talend Open Studio for ESB Talend Open Studio for ESB (TOS-ESB) fournit une interface graphique de dveloppement pour implmenter, compiler, tester et publier des services Web Java, des applications REST, des services de donnes et des routes de messages. Le dploiement dapplications avec TOS-ESB utilise principalement les trois blocs reprsents dans cette figure:Page 1 3. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESB-Le bloc bleu reprsente lAPI Talend Studio, o il est possible dintgrer des donnes, des services ou des applications-Les blocs rouges reprsentent un ou plusieurs environnements dexcution Talend dploys dans votre systme dinformation. Il vous permet de dployer et dexcuter les Jobs, les routes et les services crs dans Talend Studio. Il est possible davoir plusieurs environnements dexcution, entre lesquels vous pouvez basculer grce Talend Service Locator.-Le bloc orange est une base de donnes de monitoring, permettant de stocker les informations dexcution des processus et de lactivit des services.Linterface utilisateur de TOS-ESB se prsente comme suit:Page 2 4. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESB 512431Le traditionnel Repository contenant vos Jobs, services, fichiers, routes2La fentre principale, reprsentant graphiquement la composition de vos Jobs et Routes3Fentre contenant les proprits, la console dexcution4La palette des composants utiliser.5Onglets pour le choix de la perspective utiliserDans TOS-ESB, nous avons principalement deux perspectives: -Intgration: pour la cration de Jobs, services-Mdiation: pour la dfinition des routes.I.3 Documents fournis Pour les besoins de notre TP, nous vous fournissons: -Le bundle TOS_ESB-r110020-V5.4.0.zip : une archive complte contenant la fois lenvironnement dexcution Talend ESB (dans le sous-rpertoire Runtime ESBSE)Page 3 5. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESB ainsi que les outils Talend Open Studio for ESB (dans le sous-rpertoire Studio) fourni pour plusieurs systmes dexploitation et distributions. -Talend_ESB_GettingStartedGuide_5.4.0_EN.pdf : Une documentation dtaille pour utiliser les outils Talend ESB ( partir de laquelle nous nous sommes inspirs pour raliser ce TP).II. Cration de services web SOAP Nous ne pouvons pas configurer un ESB avant de savoir crer, dployer et excuter des services web avec les outils Talend ESB. Nous allons donc commencer avec le traditionnel Hello World. Pour cela, il faut commencer par crer un projet de votre choix. Dans toute cette partie, nous nous trouverons dans la perspective Integration.II.1 Cration et excution du service SOAP HelloWorld Pour crer un nouveau service de type SOAP: -Clic-droit sur Services de votre Repository, et choisir Create Service. Appeler le service HelloWorldService. Cliquer sur Suivant.-On vous propose soit de crer un nouveau WSDL, soit de choisir un WSDL existant. Dans notre cas, nous crons un nouveau WSDL. Cliquer sur Terminer.-Un service simple qui reoit une chane de caractres et en produit une autre est cr. Une vue graphique de son WSDL saffiche.Vous trouverez ici ladresse du service crPour pouvoir tester votre service, il faut crer un Job. Mais dabord:Page 4Cette vue est obtenue en passant la souris sur cette flche 6. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESB -Importer le WSDL de votre service dans votre repository. Pour cela, clic droit sur HelloWorldService, et choisir Importer les schmas WSDL. Vous retrouverez votre WSDL dans la partie Metadonnes -> Fichier XML.-Crer un nouveau Job pour votre service. Pour cela, clic-droit sur lopration HelloWorldServiceOperation et choisir Assign Job.-Modifier votre Job pour quil ait lallure suivante (Le tLogRow nous permettra dafficher le rsultat du service excut sur la console avant de lenvoyer au consommateur):-Configurer votre tXMLMap pour que le in de la requte soit transmise au out de la rponse, en lui concatnant le clbre Hello. Pour cela: oDouble clic sur votre XML Map.oClic-droit sur payload de lentre, et cliquer sur Import from RepositoryoChoisir HelloWorldServiceOperationRequest correspondant au ficheir WSDL que vous avez gnr.oRefaire les mmes tapes pour le payload de la sortie, en choisissant HelloWorldServiceOperationResponse.oRelier le in de la requte avec le out de la rponseoModifier lexpression du out en ajoutant la chane Hello avant la valeur in de lentre.o -Sauvegarder et quitter.Lancer votre Job (cela permettra de publier votre service web sur le port 8090). Vrifier que votre fichier WSDL existe bien, et le montrer votre enseignante.II.2 Cration du consommateur du service Nous allons maintenant crer un consommateur pour notre service. Pour cela: -Page 5Crer un nouveau Job, que vous appellerez HelloWorldServiceConsumer. Concevez votre job de manire ce quil ait lallure suivante: 7. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESB-Voici le rle des lments que vous avez ajout: o otXMLMap : associer les entres dfinies aux entres du serviceotESBConsumer : consommateur du serviceo -tFixedFlowInput : dfinir les entres envoyer votre servicetLogRow: afficher les rponses et/ou les fautes (sil yen a)Configurer votre composant tFixedFlowInput de manire ce que son schma continenne une seule colonne de type chane de caractres appele Nom, et ajouter comme noms entrer: Alice, Bob et Chuck.-Configurer votre tESBConsumer en lui donnant comme WSDL celui du service que vous avez cr. Vrifiez bien que le Endpoint soit sur le port 8090.-Configurer votre tXMLMap pour que la variable Nom soit associe au in de votre service.-Excuter le Job, et observez le rsultat.III. Configuration et utilisation de lESB Talend III.1 Lancement de deux instances de lESB Talend Pour les besoins de notre TP, nous allons lancer deux instances de lESB Talend. Pour cela, lenvironnement nous fournit une manire trs simple de le faire: -Aller dans le rpertoire /Runtime_ESBSE-Copier le rpertoire container et le renommer en alternate-container.-Nous allons maintenant configurer la deuxime instance de lESB (dans alternatecontainer) pour quelle se lance sur un port diffrent de la premire. Pour cela:Page 6 8. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESB oLancer lESB : dans le rpertoire alternate-container que vous venez de crer, aller vers bin et excuter trun.bash (sur windows). Si vous tes sur Linux ou mac, placez-vous sous le rpertoire alternate-container/bin et lancer dans un terminer la commande ./trun. La fentre suivante devrait safficher:oConfigurer lESB: dans linvite de commande affiche, taper:source scripts/configureC1.sh Un affichage semblable au suivant va safficher :Page 7 9. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESB Vous avez ainsi cr un ESB, que vous avez configur pour se lancer sur le port 8041, alors que, par dfaut, il devrait se lancer sur le port 8040. Si vous voulez crer une troisime instance, vous pouvez la configurer en utilisant le fichier configureC2.sh, de mme pour une quatrime instance Pour revenir la configuration par dfaut, utiliser configureC0.sh. o -Arrtez votre ESB, en cliquant sur ctrl-d, et relancez-le de nouveau.Lancez dans un autre terminal linstance de lESB se trouvant sous le rpertoire dorigine container. Il est inutile de la configurer, elle se lancera par dfaut sur le port 8040.III.2 Publier votre service dans lESB et le tester Pour publier votre service web sur lESB, il faut: -Faire un clic-droit sur le service HelloWorldService et choisir Exporter le service-Choisir comme rpertoire de destination le dossier deploy se trouvant dans le conteneur o vous dsirez dployer le service. Un fichier archive de type kar sera alors cr sous ce rpertoire, permettant ainsi son dploiement chaud (pas besoin de redmarrer lESB). Dployer votre service sur les deux instances dESB que vous avez dmarr.-Vrifier que vos services sont actifs: oen tapant list dans vos deux instances dESBoen affichant les fichiers WSDL du service sur les ports 8040 et 8041 au lieu de 8090.Pour tester votre service web: -Dans le job consommateur de service, dans les proprits du composant tESBConsumer, modifier le port du endpoint de 8090 8040-Lancer votre job. Vrifier que laffichage se fait correctement sur la console du TOS-ESB.-Vrifier que votre service sexcute bien sur lESB principal, en consultant le terminal o il est dmarr. Vous devriez trouver un affichage semblable celui-ci:Page 8 10. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESBIV. Cration de Routes Les routes permettent de dfinir le comportement que doit prendre le message selon son contenu. Dans notre exemple, nous allons dfinir deux types de routes: une route permettant de filtrer les messages par contenu, en envoyant les messages contenant le nom Alice vers un ESB, et le reste vers lautre ESB. Une deuxime route permettra de modifier le contenu de certains messages avant de les faire parvenir leurs destinataires. Dans cette partie, nous devons changer de perspective, pour utiliser la perspective Mediation.IV.1 Premire Route : Filtrage des Messages -Crer une nouvelle route en cliquant-droit sur Routes -> Crer une Route. Nous allons lappeler FiltrageRoute.-Page 9Dfinir vore route de manire ce quelle ressemble ce qui suit: 11. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESB -Les composants utiliss sont: ocCXF : fournit l'intgration avec Apache CXF pour la connexion aux services JAX-WS.ocMessageRouter : route des messages dans diffrents canaux selon des conditions spcifies.-Configurer la condition when, en prcisant que cest une condition de type simple, dont le texte est :"${bodyAs(String)} contains 'Alice'" Cela veut dire que, si le corps du message contient Alice, la requte sera route vers le composant cCXF_2 -Configurer le composant cCXF_1: oAdresse: http://localhost:8042/services/HelloWorldService Remarquez que le port ici est 8042, car le nouveau service sera diffus sur ce port.oWSDL: http://localhost:8040/services/SayHelloService?WSDL On utilise ici le WSDL du service initial.-Configurer ladresse de cCXF_2 sur le port 8040, et celle de cCXF_3 sur le port 8041, tout en gardant le mme WSDL pour les trois composants.-Lancer la route pour la tester. La console devra afficher connected.Pour utiliser cette route, vous devez reconfigurer votre consommateur pour quil lance sa requte sur le port 8042. Excutez-le et observez le rsultat sur les terminaux des deux instances dESB dmarres. Que constatez-vous?IV.2 Dploiement des Routes sur lESB Dans leur tat actuel, vos routes doivent tre lances manuellement pour tre prises en considration. Pour les dployer sur votre ESB et les garder ainsi toujours actives, suivre les tapes suivantes: -Faites un clic-droit sur votre route et slectionner: Build Route-Choisir le rpertoire deploy du conteneur de votre choix.-Tester votre route en excutant nouveau le consommateur (veillez ce que le job FiltrageRoute soit bien arrt).IV.3 Deuxime Route : Filtrage et Modification de Message Dans cette nouvelle partie, nous allons modifier le corps du message aprs lavoir filtr. Pour cela: -Page 10Dupliquer votre route FiltrageRoute et la nommer ModificationRoute 12. TP3 MISE EN PLACE DUN ESB AVEC TALEND ESB -Insrer un composant cSetBody (permettant de modifier le corps du message reu) puis un composant cProcessor (permettantde remanier rapidement ducode dans la route) entre le cMessageRouter et le cCXF_3. Le but ici est de modifier le corps des messages reus, selon leur contenu. -Insrer le code suivant (de type Xpath) dans le cSetBody:"tns:HelloWorldServiceOperationRequest/in" Ceci permet de saisir le contenu de la balise in de la requte SOAP envoye par le consommateur. Il ne faut pas oublier de dfinir le Namespace tns (http://www.talend.org/service/) Insrer le code suivant dans le processeur: String name = exchange.getIn().getBody(String.class); String surname; if (name.contains("Bob")){ surname = "Bobby"; }else{ surname = "Chucky"; } exchange.getIn().setBody(""+surname+" tns:HelloWorldServiceOperationRequest>");Ce code permet de modifier le corps du message entrant en remplaant le nom par un surnom. -Sauvegarder et exporter votre route dans lESB. Lancer le consommateur de nouveau et observez le rsultat.V. Homework Partie 1: En utilisant Talend ESB, crer un service web de votre choix, en utilisant plusieurs routes (modification du Header, du Body, gestion des versions, routage simple.) Partie 2: Pour le TP prochain, vous devez obligatoirement configurer votre Talend ESB pour supporter le Service Locator et Service Activity Monitoring. crire un rapport pour montrer les diffrentes tapes que vous avez suivi.Page 11