TP ESB

Daniel Hagimont


Sujet

Le but de ce TP est de travailler avec le framework Mule étudié en cours, autour d'un scénario d'intégration d'applications.
Dans ce scénario, nous voulons intégrer 4 applications :

- Saisie : une application permettant de saisir les données personnelles d'une personne qui s'inscrit quelque part (par exemple un étudiant à l'enseeiht)
- Email : une application de gestion d'emails utilisée par un administratif qui valide les inscriptions
- BD : un serveur de base de données enregistrant les étudiants
- Login : un système d'exploitation sur lequel on gère des comptes utilisateurs (cette fonction est accessible par un Web Service)

Le but de d'implanter le scénario suivant d'intégration :
- Saisie : les données d'une personne sont saisies et l'application permet d'exporter les données en XML Ces données doivent être ensuite transmises à l'administratif par email
- Email : l'admistratif verifie la cohérence des données, puis valide l'inscription en répondant à ce mail (à l'adresse spécifiée dans ReplyTo).
- Web : ces données doivent alors être intégrées dans la base de données. Elles sont donc reçues par email (la réponse) et intégrée dans la base de données.
- Login : les mêmes données sont exploitées pour demander la création d'un compte utilisateur sur une machine avec un web service


Les applications à utiliser : legacy

- saisie : ce répertoire contient une petite application de saisie (voir le readme)
- bd : ce répertoire contient la base de données à lancer (hsqldb)
- ws : ce répertoire contient le Web Service permettant de demander la création d'un login, à déployer dans un Tomcat (voir readme)
- il faudra avoir une adresse email correspondant à celle utilisée par l'administratif et une utilisée pour recevoir la réponse de l'administratif

Environnement Logiciel

JDK 1.7 : il vous faut utiliser cette version de Java pour utiliser la version de Mule ci-dessous.
        - source use-jdk7.bash permet d'utiliser ce JDK1.7
        - utiliser JDK1.8 pour les autres logiciels (activeMQ, HSQLDB)

Mule Studio 1.3.0 : cette version est open source
        - copiez l'installation dans votre répertoire nosave
        - décompressez la
        - lancer MuleStudio avec le JDK1.7

legacy.tgz : contient les applications à intégrer
        - à copier chez vous

apache-activemq-5.12.1-bin.tar.gz : activeMQ
        - à copier chez vous

sujet-esb.tgz : les exemples de base utiles pour réaliser cette intégration
        - à copier chez vous

Tout cela se trouve dans /mnt/n7fs/ens/tp_dh/tp-esb


Exemples

Les exemples qui vous sont fournis sont situés dans le répertoire tp :

- xml : un exemple de fichiers et de parsing xml
    - pour tester
        - importez ou recréez le projet
        - créez des répertoires /tmp/in et /tmp/out
        - exécutez le flow
        - copiez legacy/saisie/example.xml dans /tmp/in
        - regarder dans /tmp/out

- jdbc : un exemple d'utilisation d'une BD
    - pour tester
        - importez ou recréez le projet
        - ajoutez le driver jdbc (legacy/bd/hsqldb/lib/hsqldb.jar) dans votre projet
        - lancez la BD
            - ant start (dans legacy/bd)
        - créer la table dans la BD
            - ant db
        - regardez dans la BD
            - ant console
        - exécutez le flow
        - copiez legacy/saisie/example.xml dans /tmp/in
        - regardez à nouveau dans la BD

- smtp : un exemple d'envoi d'email avec SMTP
    - pour tester
        - importez ou recréez le projet
        - modifiez l'adresse email pour ne pas m'envoyer un email !
        - exécutez le flow
        - copiez legacy/saisie/example.xml dans /tmp/in
        - regardez votre mailbox

- imap : un exemple de lecture d'email avec IMAP
    - pour tester
        - importez ou recréez le projet
        - utilisez une adresse gmail (j'en ai une qui est tpdhlogin/tpdhpasswd, mais c'est mieux d'avoir la votre)
        - exécutez le flow
        - envoyez un email à cette adresse
        - regardez dans /tmp/out

- ws : un exemple d'appel à un web service
    - pour tester
        - lancez tomcat et copiez de WS dedans (legacy/ws/WS.war)
        - importez ou recréez le projet
        - exécutez le flow
        - copiez legacy/saisie.example.xml dans /tmp/in
        - regardez dans /tmp/accounts (simule l'ajout d'un compte utilisateur)

- jms : un exemple d'envoi de message JMS
    - pour tester
        - importez ou recréez le projet
        - ajoutez le driver de activemq (apache-activemq-5.12.1/activemq-all-5.12.1.jar) dans votre projet
        - lancez activemq
            - ./activemp start dans apache-activemq-5.12.1/bin
         - exécutez le flow
        - copiez legacy/saisie.example.xml dans /tmp/in
       - regardez dans /tmp/out

Etapes

- dessinez un schéma global de l'intégration
- travaillez de façon incrémentale :
    - connectez Saisie et Email
    - connectez Email et la BD
    - intégrez Login

Attention: Bug dans MuleStudio !

Si vous utilisez un endpoint IMAP, lorsque vous sauvegardez votre projet, il arrive que MuleStudio génère un XML buggé.
A l'exécution, vous observez une exception : org.xml.sax.SAXParseException
Si vous allez voir le XML généré, vous verrez une ligne incomplète :
http://www.mulesoft.org/schema/mule/imap s ">
Enlevez là en vérifiant que le XML reste bien parenthèsé.