I.9.2 Les middlewares open
sources
1. Java Open ReliableAsynchronous Messaging (ou
JORAM)
1.1. Présentation
JORAM Messaging, est leMiddleware de consortium Object Web.
Object Web est aussi connu pour son serveur d'application Java
nommé Jonas auquel est d'ailleurs intégré JORAM. JORAM est
sortie en 1999 et est distribué sous licence LGPL depuisMai 2000.
1.2 . Architecture
Figure I.8:Architecture JORAM
1.3 . Implémentation
JORAM a une architecture interne élégante,
basée sur le modèle d'agent.Un agent est un composant logiciel
répondant à certains événements. Dans le cas de
JORAM, les événements sont sous forme de messages.Les queues et
les topics sont ainsi représentés par des agents.
Un utilisateur connecté à la plateforme est
également représenté par un agent dit proxy. Cette
approche offre une grande flexibilité, car elle permet la
création et la suppression d'agents à la volée et sur
n'importe quel broker. Un broker est donc uniquement un serveur d'agent (ouun
container d'agent). À l'instar des EJB, ces agents ne peuvent pas encore
être déplacés de broker en broker.
Le code source récupéré du SVN JORAM est
assez bien documenté. Il est fait de « beans»
séparés en Interfaces et Implémentations. Dansl'ensemble,
le code respecte les bonnes pratiques de développement Java.
1.3.1 Langages pris en charge
Les langages par lesquels on peut accéder à
JORAM sont :
Ø Java via l'interface JMS.
Ø C et C++ : À l'aide de JNI, permettant ainsi
de simuler un environnement JMS.
1.3.2 Protocoles pris en charge
Le protocole interne de JORAM est propriétaire, et
n'est pas documenté. Nous estimons que c'est un handicap dans la mesure
où cela tend à limiter le nombre d'environnements dans lesquels
des APIs sont offertes, et à rendre plus difficiles les interconnexions.
Joram le désigne simplement par « TCP », mais il est
évident qu'il y a un protocole, non spécifié, au-dessus de
TCP/IP.
Ainsi, JORAM ne s'appuie pas sur des protocoles standards
comme AMQP ou STOMP.
JORAM met à disposition des passerelles permettant
d'étendre le nombre de protocoles gérés tout en se basant
sur le protocole dit
« TCP ».
Ø Passerelle SOAP (grâce à un serveur
d'application) : Permet la communication en SOAP avec le broker, donc en
principe depuis des environnements autres que Java.
Ø Passerelle Mail : Cette passerelle permet d'envoyer
et de recevoir des messages JMS en s'appuyant sur du SMTP (Protocole de mail).
Pour cela JORAM utilise des queues et topics spécifiques. Cette
passerelle est réalisée en Java.
Ø Passerelle FTP : JORAM réserve des queues
spécifiques pour les canaux FTP. Cette passerelle fonctionne sur le
même principe que la passerelle Mail. Elle est destinée à
l'échange de messages volumineux. Cette passerelle est
réalisée en Java.
1.3.3 Interfaces prises en charge
Selon les classes d'interface :
Ø Gestion des messages JORAM prend en charge le JMS 1.1
et est compatible avec JMS 1.0.2b. JORAM a aussi implémenté une
interface JMS 1.1 destinée, au Framework J2ME, la version de
l'environnement Java destinée aux mobiles, téléphones et
PDAs. JORAM peut donc être mis en oeuvre à partir de terminaux
mobiles compatibles Java.
JORAM prend aussi en charge JCA 1.5, lui permettant de se
connecter aux différents PGI du marché (Open ERP, ...) qui le
gèrent.
Ø Interfaces d'Administration, Monitoring,
Configuration.
JORAM supporte l'interface d'administration JMX. Il est
intégrable et configurable en Java. Il supporte aussi le JAAS
pourl'authentification et les habilitations.
1.4. Gestion des messages
Outre les fonctionnalités standards, JORAM gère
:
La notion de hiérarchie des topics : Chaque topic peut
être lié à un autre (et un seul) et recevoir tous ses
messages. À son tour, le parent topic reçoit tous les messages de
ces parents et les envoie à tous ses topics fils. Il n'est pas possible
de faire de traitement avec JORAM.
1.4.1 Persistance des messages
La persistance peut être gérée sur le
système de fichier, dans une base java embarquée (Derby, voir
plus loin pour plus de détail), ou sur une base de données
relationnelle externe via JDBC.
Derby est un système de gestion de base de
données relationnelle embarquée. « Embarquée »
veut simplement dire qu'il n'est pas nécessaire d'avoir un serveur de
base de données, au sens d'un processus distinct.
La base de données est dans le même processus que
l'application. Le support de stockage de la base Derby est le fichier. Derby
est une méthode avancée de lecture et d'écriture sur des
fichiers.Nous n'avons pas trouvé, dans les documentations fournies par
JORAM, d'information sur les optimisations possibles de la
gestion de la persistance.
1.4.2 Répartition de charge et haute
disponibilité avec plusieurs sites
Comme on l'a évoqué, JORAM est construit
selon une architecture à base d'agents. Cette architecture est
l'objet d'un livre blanc disponiblesur le site du produit.
Grâce à son architecture, JORAM assure :
Ø La disponibilité : pour rappel, la
défaillance d'un serveur n'affecte que les clients JMS connectés
à ce serveur. Les autres continuent à fonctionner en
accédant à d'autres copies du domaine. La synchronisation des
domaines se fait d'une manière transparente, selon un principe
maître-esclave.
Ø Répartition de charge : les applications
clientes sont réparties sur plusieurs serveurs de telle sorte que la
charge engendrée par la gestion des domaines soit répartie entre
les serveurs. Cette répartition peut soit être
réalisée manuellement (configuration et utilisation du «
Store and Forward »), soit être confiée à un
load-balancer.
1.5. Interopérabilité avec d'autres
MOMs
JORAM fournit un squelette de passerelle avec d'autres MOM
gérant leJMS 1.1.
1.5.1 Gestion de la sécurité et d'un
annuaire
JORAM peut être configuré pour utiliser des
connexions SSL / TLS.
Il gère l'authentification et l'autorisation.
Des fichiers de configuration au format XML sont
utilisés pour définir la configuration de sécurité.
Il est possible également de personnaliser la gestion de la
sécurité au travers JAAS.
Mais ces aspects ne sont pas suffisamment
documentés.
1.5.1 Administration
JORAM met à disposition une interface graphique
d'administration. Elle se base sur l'utilisation de JMX.
|