Ch’ti Jug: GlassFish ESB
Jeudi 21 janvier s’est tenu une session du Ch’ti Jug sponsorisée par Cap Gemini sur GlassFish ESB : GlassFish ESB avec CAPGEMINI.
Pour ceux qui ne savent pas ce qu’est le Ch’ti Jug ou ce qu’est un Jug, voir l’introduction de mon article sur la première session à laquelle j’ai participé: Ch’ti Jug: les technologies Google
Cette session été animée par Didier Burkhalter, Architecte chez Sun.
Utilisant GlassFish ESB depuis quelques temps déjà, je connaissais le sujet. La présentation été normalement sur un cas d’utilisation, une “Success Story” mais il faut avouer que le cas d’utilisation n’a que très peut évoqué alors que ce qui intéressé mon équipe été plus un retour sur expérience. Mais je pense que ceux qui ne connaissait pas GlassFish ESB on été plus intéréssé par la conférence que moi car une bonne partie de la conférence a servi a en présenter les principes de bases.
Présentation rapide de GlassFish ESB:
- Implémentation de référence de la spécification JSR208 : Java Business Integration (JBI)
- JBI est une spécification qui ne fait pas partie de J2EE mais vient répondre à des problématique intégration de services en utilisant un serveur d’application comme conteneur uniquement (sans l’utilisation de la couche J2EE). GlassFish ESB est donc un GlassFish auquel on a ajouter un conteneur JBI.
- JBI répond donc à des besoin autre que des besoin client/serveur. Aux besoin d’ESB: Enterprise Service Bus.
- JBI est décomposé en trois couches:
- Binding Composant: couche basse permettant la communication avec les éléments externe à l’ESB. Les principaux Bindng Composant sont: JMS, HTTP (Soap), Scheduler, FTP, Email, …
- NMR (Normalized Service Bus): c’est le coeur de l’ESB, il permet la communication de manière normalisé enter toutes les partie de l’ESB
- Service Engine: moteurs permettant de faire fonctionner les composants déployé dans l’ESB (les différents jar et autres artefact). Les principaux services engine sont: J2EE (pour les EJB), Bpel, Xslt, Pojo, …
- GlassFish ESB est livré avec un ensemble de binding component et de service engine, de nombreux autres peuvent être trouvé dans le projet open ESB (issue de la communauté open source), dans le projet CAPS (livré par Sun mais payant) ou par des société tierces.
- Netbeans est l’IDE permettant de développer et de déployer facilement pour GlassFish ESB. Il contient entre autre un designer BPEL de très bonne qualité.
Quand on veut développé pour GlassfishESB, on développe les composants suivant:
- Des Webservices, EJB ou Pogo à intégrer pour les parties métier
- Des XSLT pour les transformation
- Des BPEL pour le mapping de donné et l’orchestration des services. La version de BPEL est la 2.0.
- Une CASA (Composite Application): artefact final de déploiement sur le serveur. Elle permet de lier entre eux les différents composants de l’application et de gérer la couche de binding (qui peut être séparé des composants) et la partie QoS (Quality Of Service)
De nombreuses autres fonctionnalités existent:
- Gestion des alertes et des évènement
- Monitoring via JMX et scripts: GlassFish ESB est livré avec des bean JMX et des scripts permettant de monitorer les application et les instances de BPEL mais est livré sans réelle console de monitoring et de supervision. C’est du ressort du développeur de créer ses propres consoles.
- CEP: Complex Event Processing si on achète la version CAPS de l’ESB
- De nombreux autres fonctionnalités sont disponibles, certaines gratuites d’autres payants. Voire les sites web des produits.
Quelques mots sur les différentes version, qui toutes regroupe une version de GlassFish intégrant le conteneur JBI et une version de Netbeans comprenant les éditeurs BPEL et CASA. J’ai utilisé ici principalement le terme de GlassFish ESB mais pour être exacte il faut séparé:
- OpenESB: version open source avec appuie de la communauté. Aucun support possible. Près de 40 composants disponible dont de nombreux en version bêta.
- GlassFish ESB: version gratuite mais permettant une support de Sun. Sous ensemble stable d’Open ESB comprenant environ 15 composants.
- CAPS: version payante fournie par Sun, apportant de nombreux composants et fonctionnalités supplémentaire. Généralement basé sur une version antérieur de OpenESB et Netbeans.
Pour terminer, quelques mots du cas d’usage présenté. Il s’agit de la création d’environ 40 composants pour une société de télécommunication pour gérer les demandes de création de lignes ADSL pour les entreprises. Le nombres de commandes été de l’ordre de quelques centaines à un millier maximum par jour. Le développement a été réalisé dans un temps court (grâce à la plateforme qui offre une architecture standardisé opérationnelle et aux facilité offertes par Netbeans) par une équipe de 4-5 personnes en mode Agile. Et le résultat a été, pour le client, une surprise car très rapidement fonctionnel et performant.
Pour terminer, quelques liens pour aller plus loin:
- OpenESB : https://open-esb.dev.java.net/
- Glassfish ESB: http://www.sun.com/software/javaenterprisesystem/javacaps/glassfish_esb.jsp
- CAPS: http://developers.sun.com/javacaps/index.jsp
- Wiki Glassfish ESB (meilleur qualité que le Wiki d’Open ESB): http://docs.sun.com/app/docs/coll/2511.2