NB : cet article fait partie d’une série de présentation et de tutorial pour démystifier Mule ESB : http://net-progress.blogspot.com/)
Reprenons l’exemple précédent (voir lien suivant ), pour y ajouter un élément nouveau :
Traiter le message obtenu au niveau du point d’entrée (<inbound>) avant de le transférer vers le point de sortie </outbound>
C’est l’occasion d’utiliser le tag XML component :
<component> </component>
| Le service métier à invoquer |
Avant de configurer le service « métier », il est temps de développer la classe Java qui sera responsable de traiter le message :
Il est très important de savoir que cette classe java est indépendante de Mule : il s’agit d’un simple POJO (on verra même comment l’injecter avec de l’Ioc et Spring)
La classe Java est la suivante : com.oxia.att.mule.intro.ComposantSimple
Avec Eclipse :
Préciser le package et le nom de la classe
Puis développer la classe :
Ceci est un exemple simple
1: package com.oxia.att.mule.intro;
2: import java.util.UUID;
3: package com.oxia.att.mule.intro;
4: import java.util.UUID;
5: public class ComposantSimple {
6: private String prefix="Le préfix du message_";
7: private String numero;
8: /*
9: * exemple simple de méthode métier qui
10: * exploite le message obtenu ( Mule est responsable de tout transformer ...)
11: * et retourne un nouveau message ( Mule est responsable de tout transformer ...)
12: *
13: */
14: public String hello(String message) {
15: numero = "_"+ UUID.randomUUID().toString();
16: System.out.println("le message originale est : " +message);
17: message = prefix + message + numero ;
18: System.out.println("le message en sortie est : " +message);
19: return message ;
20: }
21: public void setPrefix(String prefix) {
22: this.prefix = prefix;
23: }
24: }
Maintenant il suffit d’indiquer à Mule d’utiliser cette classe Java comme destination su message obtenu au niveau du INBOUD (utiliser une nouvelle configuration de Mule (echo-system-2-config.xml)1: <component class="com.oxia.att.mule.intro.ComposantSimple"/>
Le projet se présente comme suit :Exécuter le projet :
On constate que
- le message est « passé » au POJO sous format String
Mule a découvert (tout seul) la méthode à utiliser, grâce à son algorithme de résolution :
- deux candidata public void setPrefix(String prefix) et public String hello(String message),
- la méthode set public void setPrefix(String prefix) ne retourne rien alors que la méthode public String hello(String message), retourne un String : c’est une cible
En cas d’ambiguïté, il est possible d’indiquer la méthode dans la configuration du composant
mais ceci est un autre sujet
6 commentaires :
s'il vous plaît monsieur, pouvez m'envoyer le fichier "echo-system-2-config.xml"
puisque j'ai testé ce exemple mais ne marche pas.
je veux un exemple permet la somme de deux entier.
pouvez vous monsieur de m'expliquer comme l'invocation des méthodes est effectué???????
les exemples existent dans le site officiel de Mule, mulesoft.org
la documentation (en anglais) est très précise sur ces aspects
<--?xml version="1.0" encoding="UTF-8"?-->
<--mule xmlns="http://www.mulesource.org/schema/mule/core/2.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.2"
xsi:schemaLocation="
http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
http://www.mulesource.org/schema/mule/stdio/2.2 http://www.mulesource.org/schema/mule/stdio/2.2/mule-stdio.xsd"-->
<--stdio:connector name="SystemStreamConnector"
promptMessage="Saisir les informations nécessaires: "
messageDelayTime="1000"/-->
<--model name="echoSample"-->
<--service name="echoService"-->
<--inbound-->
<--stdio:inbound-endpoint system="IN"/-->
<--/inbound-->
<--component class="com.oxia.att.mule.intro.ComposantSimple"/-->
<--outbound-->
<--pass-through-router-->
<--stdio:outbound-endpoint system="OUT"/-->
<--/pass-through-router-->
<--/outbound-->
<--/service-->
<--/model-->
<--/mule-->
merci pour le tuto ^_^
Enregistrer un commentaire