tp soa avec talend esb

12
Institut National des Sciences Appliquées et de Technologie Tunisie E-Services 2013-2014 TP3- MISE EN PLACE D’UN ESB AVEC TALEND ESB Dr. Lilia SFAXI Objectifs du TP : Création de services web avec l’outil Talend Open Studio for ESB, et configuration des routes dans Talend ESB

Upload: alahyane-ahmed

Post on 05-Dec-2014

523 views

Category:

Technology


11 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Tp soa avec talend esb

Institut National des Sciences Appliquées et de Technologie Tunisie

E-Services

2013-2014

TP3- MISE EN PLACE D’UN ESB AVEC TALEND

ESB Dr. Lilia SFAXI

Objectifs du TP : Création de services web avec l’outil Talend

Open Studio for ESB, et configuration des routes dans Talend ESB

Page 2: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 1

I. Les outils Talend pour ESB I.1 Talend ESB Talend ESB est une solution légère, robuste et modulaire pour la création de services web

sécurisés ainsi que pour l’intégration d’applications nouvelles ou existantes.

Talend participe au développement des composants ESB à travers la communauté

Apache. Il collabore avec un grand nombre de développeurs de la communauté

Apache et a fait plusieurs contributions aux projets Apache.

Talend fournit:

- Un courtier de messages à haute performance.

- Des options de déploiement flexibles

- Des outils de développement pour Eclipse

- Une interface utilisateur pour l’intégration et la médiation d’applications

- Support pour les services web SOAP et REST

- La médiation et le routage

- Support pour le failover, le monitoring et la sécurité

L’environnement d’exécution standard de Talend ESB est un conteneur OSGi.

L’implémentation OSGi fournie avec Talend ESB est Apache Karaf, avec Eclipse Equinox

comme environnement d’exécution OSGi. Elle fournit un conteneur léger dans lequel les

différents composants et applications peuvent être déployées.

I.2 Talend Open Studio for ESB Talend Open Studio for ESB (TOS-ESB) fournit une interface graphique de développement

pour implémenter, compiler, tester et publier des services Web Java, des applications

REST, des services de données et des routes de messages.

Le déploiement d’applications avec TOS-ESB utilise principalement les trois blocs

représentés dans cette figure:

Page 3: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 2

- Le bloc bleu représente l’API Talend Studio, où il est possible d’intégrer des

données, des services ou des applications

- Les blocs rouges représentent un ou plusieurs environnements d’exécution Talend

déployés dans votre système d’information. Il vous permet de déployer et

d’exécuter les Jobs, les routes et les services créés dans Talend Studio. Il est

possible d’avoir plusieurs environnements d’exécution, entre lesquels vous pouvez

basculer grâce à Talend Service Locator.

- Le bloc orange est une base de données de monitoring, permettant de stocker

les informations d’exécution des processus et de l’activité des services.

L’interface utilisateur de TOS-ESB se présente comme suit:

Page 4: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 3

Le traditionnel Repository contenant vos Jobs, services, fichiers, routes…

La fenêtre principale, représentant graphiquement la composition de vos Jobs et Routes

Fenêtre contenant les propriétés, la console d’exécution…

La palette des composants à utiliser.

Onglets pour le choix de la perspective à utiliser

Dans TOS-ESB, nous avons principalement deux perspectives:

- Intégration: pour la création de Jobs, services…

- Médiation: pour la définition 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 complète contenant à la fois

l’environnement d’exécution Talend ESB (dans le sous-répertoire Runtime ESBSE)

1

2

3

4

5

1

3

5

4 2

Page 5: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 4

ainsi que les outils Talend Open Studio for ESB (dans le sous-répertoire Studio) fourni

pour plusieurs systèmes d’exploitation et distributions.

- Talend_ESB_GettingStartedGuide_5.4.0_EN.pdf : Une documentation détaillée

pour utiliser les outils Talend ESB (à partir de laquelle nous nous sommes inspirés

pour réaliser ce TP).

II. Création de services web SOAP Nous ne pouvons pas configurer un ESB avant de savoir créer, déployer et exécuter des

services web avec les outils Talend ESB. Nous allons donc commencer avec le traditionnel

Hello World. Pour cela, il faut commencer par créer un projet de votre choix.

Dans toute cette partie, nous nous trouverons dans la perspective Integration.

II.1 Création et exécution du service SOAP HelloWorld Pour créer 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 créer un nouveau WSDL, soit de choisir un WSDL existant.

Dans notre cas, nous créons un nouveau WSDL. Cliquer sur Terminer.

- Un service simple qui reçoit une chaîne de caractères et en produit une autre est

créé. Une vue graphique de son WSDL s’affiche.

-

Pour pouvoir tester votre service, il faut créer un Job. Mais d’abord:

Cette vue est obtenue en passant la souris sur cette flèche

Vous trouverez ici l’adresse du service créé

Page 6: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 5

- Importer le WSDL de votre service dans votre repository. Pour cela, clic droit sur

HelloWorldService, et choisir Importer les schémas WSDL. Vous retrouverez votre

WSDL dans la partie Metadonnées -> Fichier XML.

- Créer un nouveau Job pour votre service. Pour cela, clic-droit sur l’opération

HelloWorldServiceOperation et choisir Assign Job.

- Modifier votre Job pour qu’il ait l’allure suivante (Le tLogRow nous permettra

d’afficher le résultat du service exécuté sur la console avant de l’envoyer au

consommateur):

- Configurer votre tXMLMap pour que le in de la requête soit transmise au out de la

réponse, en lui concaténant le célèbre “Hello”. Pour cela:

o Double clic sur votre XML Map.

o Clic-droit sur payload de l’entrée, et cliquer sur Import from Repository

o Choisir HelloWorldServiceOperationRequest correspondant au ficheir WSDL

que vous avez généré.

o Refaire les mêmes étapes pour le payload de la sortie, en choisissant

HelloWorldServiceOperationResponse.

o Relier le in de la requête avec le out de la réponse

o Modifier l’expression du out en ajoutant la chaîne “Hello “ avant la valeur in

de l’entrée.

o Sauvegarder et quitter.

- Lancer votre Job (cela permettra de publier votre service web sur le port 8090).

Vérifier que votre fichier WSDL existe bien, et le montrer à votre enseignante.

II.2 Création du consommateur du service Nous allons maintenant créer un consommateur pour notre service. Pour cela:

- Créer un nouveau Job, que vous appellerez HelloWorldServiceConsumer.

- Concevez votre job de manière à ce qu’il ait l’allure suivante:

Page 7: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 6

- Voici le rôle des éléments que vous avez ajouté:

o tFixedFlowInput : définir les entrées à envoyer à votre service

o tXMLMap : associer les entrées définies aux entrées du service

o tESBConsumer : consommateur du service

o tLogRow: afficher les réponses et/ou les fautes (s’il y’en a)

- Configurer votre composant tFixedFlowInput de manière à ce que son schéma

continenne une seule colonne de type chaîne de caractères appelée 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éé. Vérifiez bien que le Endpoint soit sur le port 8090.

- Configurer votre tXMLMap pour que la variable Nom soit associée au in de votre

service.

- Exécuter le Job, et observez le résultat.

III. Configuration et utilisation de l’ESB Talend III.1 Lancement de deux instances de l’ESB Talend Pour les besoins de notre TP, nous allons lancer deux instances de l’ESB Talend. Pour cela,

l’environnement nous fournit une manière très simple de le faire:

- Aller dans le répertoire <rep_install_talend> /Runtime_ESBSE

- Copier le répertoire container et le renommer en alternate-container.

- Nous allons maintenant configurer la deuxième instance de l’ESB (dans alternate-

container) pour qu’elle se lance sur un port différent de la première. Pour cela:

Page 8: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 7

o Lancer l’ESB : dans le répertoire alternate-container que vous venez de

créer, aller vers bin et exécuter trun.bash (sur windows). Si vous êtes sur

Linux ou mac, placez-vous sous le répertoire alternate-container/bin et

lancer dans un terminer la commande ./trun. La fenêtre suivante devrait

s’afficher:

o Configurer l’ESB: dans l’invite de commande affichée, taper:

source scripts/configureC1.sh

Un affichage semblable au suivant va s’afficher :

Page 9: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 8

Vous avez ainsi créé un ESB, que vous avez configuré pour se lancer sur le port

8041, alors que, par défaut, il devrait se lancer sur le port 8040. Si vous voulez créer

une troisième instance, vous pouvez la configurer en utilisant le fichier

configureC2.sh, de même pour une quatrième instance… Pour revenir à la

configuration par défaut, utiliser configureC0.sh.

o Arrêtez votre ESB, en cliquant sur ctrl-d, et relancez-le de nouveau.

- Lancez dans un autre terminal l’instance de l’ESB se trouvant sous le répertoire

d’origine container. Il est inutile de la configurer, elle se lancera par défaut sur le

port 8040.

III.2 Publier votre service dans l’ESB et le tester Pour publier votre service web sur l’ESB, il faut:

- Faire un clic-droit sur le service HelloWorldService et choisir Exporter le service

- Choisir comme répertoire de destination le dossier deploy se trouvant dans le

conteneur où vous désirez déployer le service. Un fichier archive de type kar sera

alors créé sous ce répertoire, permettant ainsi son déploiement à chaud (pas

besoin de redémarrer l’ESB).

è Déployer votre service sur les deux instances d’ESB que vous avez démarré.

- Vérifier que vos services sont actifs:

o en tapant list dans vos deux instances d’ESB

o en 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 propriétés du composant

tESBConsumer, modifier le port du endpoint de 8090 à 8040

- Lancer votre job. Vérifier que l’affichage se fait correctement sur la console du

TOS-ESB.

- Vérifier que votre service s’exécute bien sur l’ESB principal, en consultant le

terminal où il est démarré. Vous devriez trouver un affichage semblable à celui-ci:

Page 10: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 9

IV. Création de Routes Les routes permettent de définir le comportement que doit prendre le message selon son

contenu. Dans notre exemple, nous allons définir 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 l’autre ESB. Une deuxième 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 Première Route : Filtrage des Messages - Créer une nouvelle route en cliquant-droit sur Routes -> Créer une Route. Nous

allons l’appeler FiltrageRoute.

- Définir vore route de manière à ce qu’elle ressemble à ce qui suit:

Page 11: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 10

- Les composants utilisés sont:

o cCXF : fournit l'intégration avec Apache CXF pour la connexion aux

services JAX-WS.

o cMessageRouter : route des messages dans différents canaux selon des

conditions spécifiées.

- Configurer la condition when, en précisant que c’est 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 requête sera

routée vers le composant cCXF_2

- Configurer le composant cCXF_1:

o Adresse: http://localhost:8042/services/HelloWorldService è Remarquez

que le port ici est 8042, car le nouveau service sera diffusé sur ce port.

o WSDL: http://localhost:8040/services/SayHelloService?WSDL è On utilise ici

le WSDL du service initial.

- Configurer l’adresse de cCXF_2 sur le port 8040, et celle de cCXF_3 sur le port 8041,

tout en gardant le même 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 qu’il lance sa

requête sur le port 8042. Exécutez-le et observez le résultat sur les terminaux des deux

instances d’ESB démarrées. Que constatez-vous?

IV.2 Déploiement des Routes sur l’ESB Dans leur état actuel, vos routes doivent être lancées manuellement pour être prises en

considération. Pour les déployer sur votre ESB et les garder ainsi toujours actives, suivre les

étapes suivantes:

- Faites un clic-droit sur votre route et sélectionner: Build Route

- Choisir le répertoire deploy du conteneur de votre choix.

- Tester votre route en exécutant à nouveau le consommateur (veillez à ce que le

job FiltrageRoute soit bien arrêté).

IV.3 Deuxième Route : Filtrage et Modification de Message Dans cette nouvelle partie, nous allons modifier le corps du message après l’avoir filtré.

Pour cela:

- Dupliquer votre route FiltrageRoute et la nommer ModificationRoute

Page 12: Tp soa avec talend esb

TP3 – MISE EN PLACE D’UN ESB AVEC TALEND ESB

Page 11

- Insérer un composant cSetBody (permettant de modifier le corps du message

reçu) puis un composant cProcessor (permettant de remanier rapidement du

code dans la route) entre le cMessageRouter et le cCXF_3. Le but ici est de

modifier le corps des messages reçus, selon leur contenu.

- Insérer le code suivant (de type Xpath) dans le cSetBody:

"tns:HelloWorldServiceOperationRequest/in"

Ceci permet de saisir le contenu de la balise in de la requête SOAP envoyée par

le consommateur. Il ne faut pas oublier de définir le Namespace tns

(http://www.talend.org/service/)

Insérer 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("<tns:HelloWorldServiceOperationRequest

xmlns:tns=\"http://www.talend.org/service/\"><in>"+surname+"</in></tns:HelloWorldServiceOperationRequest>");

Ce code permet de modifier le corps du message entrant en remplaçant le nom

par un surnom.

- Sauvegarder et exporter votre route dans l’ESB. Lancer le consommateur de

nouveau et observez le résultat.

V. Homework

Partie 1:

En utilisant Talend ESB, créer 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 différentes étapes que vous avez suivi.