Connecter un MDB au SI de l’entreprise via JCA.

La norme 2.0 des EJB (Enterprise Java Bean) a introduit le MDB (Message Driven Bean), composant asynchrone permettant de recevoir et d'émettre des messages JMS (Java Messaging Service). Toutefois, il s'est avéré que ce type de communication fondé sur JMS était loin de répondre à tous les besoins de l'entreprise : en effet, les environnements JEE, en particulier le container EJB, ont un réel besoin de communiquer avec le système d'information de l'entreprise (EIS), souvent propriétaire et spécifique : serveurs de mails, ERP, EAI, Mainframe...

Ainsi, dans la version 2.1 des spécifications des EJB, la notion de MDB est étendue au delà de JMS pour n'importe quel système de messages. Ceci est effectif grâce à l'API JCA (JEE Connector Architecture), une couche d'abstraction qui permet de standardiser la communication entre un serveur JEE et l'EIS et de résoudre ainsi les problèmes d'intégration posés par la version 2.0 des EJB.

EJB 3 et JCA 1.5

Pour cela, JCA s'appuie sur un composant nommé Ressource Adapter, un peu comme JDBC s'appuie sur un driver pour communiquer avec une base de donnée. L'API est fournie avec le serveur JEE (en version 1.5 pour JEE5, donc pour les EJB 3.0) et permet aux MDB de recevoir des messages qui seront traités par un Listener autre que celui fondé sur JMS.

En sa voir plus sur le Ressource Adapter

Implémentation MDB simple basée sur JMS.


@MessageDriven
public class JmsBasedMDB implements javax.jms.MessageListener {

public void onMessage(javax.jms.Message message) {

}

}

Implémentation MDB utilisant JCA pour communiquer avec un système extérieur


@MessageDriven (activationConfig = {

@ActivationConfigProperty(

propertyName= nomDeMaPropriete
propertyValue = valueDeMaPropriete),

...

})

public class JcaBasedMDB implements monListener {

}

Ici, l'interface monListener fait partie des ressources fournies par le vendeur du système extérieur packagée avec le ressource Adapter sous forme de JAR. Reste à implémenter les méthodes de l'interface avec notre logique métier, sachant que ces méthodes peuvent très bien avoir un type de retour différent de void. Les annotations @ActivationConfigProperty permettent de définir les propriétés de configuration relatives au système extérieur.

En conclusion, JCA permet une meilleure intégration des EJB au sein du système d'information de l'entreprise en fournissant une interface standard de communication pour les systèmes en dehors de la sphère JEE. Cela nécessite toutefois que le système avec lequel on veut communiquer possède une implémentation de Ressource Adapter pour se connecter au container EJB.

Source : Enterprise JavaBeans 3.0, Bill Burke & Richard Monson-Haefel, O'REILLY

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.