• Aucun résultat trouvé

Département Télécommunications, Services & Usages

N/A
N/A
Protected

Academic year: 2022

Partager "Département Télécommunications, Services & Usages"

Copied!
15
0
0

Texte intégral

(1)

Département Télécommunications, Services & Usages

Étude d’un Middleware

Philippe ISORCE

Introduction

Les MOM (Message Oriented Middleware) permettent l’intégration d’applications hétérogènes

JMS normalise l’accès des programmes Java aux middlewares à messages (MQSeries, MSMQ, TIBCO, SonicMQ,…)

JORAM implémente JMS 1.1 et les spécifications du serveur de messagerie

La plate-forme MT Échange met en œuvre le MOM, et un Réseau d’Échange de Données (RED)

(2)

Département Télécommunications, Services & Usages 3

Message Oriented Middleware (MOM)

Modèle de communication entre logiciels

Intégration de modules hétérogènes distribués Indépendance (asynchronisme)

Fiabilité et garantie de délivrance

RPC

MOM

Principe de base du MOM

Système de messagerie d’entreprise Files de messages persistantes

Échange asynchrone de messages (stockage des messages si nécessaire)

Reprise après une panne du MOM

Un émetteur remet son message et peut continuer son exécution sans se soucier de l’état du destinataire

(3)

Département Télécommunications, Services & Usages 5

Caractéristiques du MOM

Modes de communication

Point-à-point (PTP): émetteur, destinataire et file (queue)

Publication/Souscription (Pub/Sub): éditeur, abonné et rubrique (topic)

Modèle de programmation

Réception explicite / implicite

Messages

Messages dotés d’attributs et de propriétés Priorités, garantie de délivrance

Utilisation du MOM

6 Étapes

Initialisation : recherche d’une fabrique, d’une destination, création d’une connexion, d’une session Production / Consommation : création d’un

producteur ou consommateur, du message, envoi ou réception

(4)

Département Télécommunications, Services & Usages 7

L’interface Java Message Service (JMS)

API Java d’accès uniforme aux systèmes de messagerie d’entreprise

Provider X JVM Client

Client

Client

MQ X MQ X MQ X MQ X

JMS Client

Provider X JVM Client

JMS

Composants d’une application JMS

Fournisseur JMS (MOM)

Modèle P2P, Pub/sub Fonctions administration

Clients JMS

Producteur, consommateur

Objets administrés

Connexions et destinations

Messages

(5)

Département Télécommunications, Services & Usages 9

Anatomie d’un message JMS

Charge utile Message TextMessage ObjectMessage BytesMessage

En-têtes JMSDestination JMSDeliveryMode JMSMessageID JMSTimestamp JMSExpiration JMSPriority JMSType

Entêtes

Automatiques Paramétrables

Propriétés

Spécifiques à l’application

Définies par JMS ou par le MOM

Charge Utile

Sélecteur de message Type de message

Propriétés JMSXUserID JMSXAppID JMSXState

Mode Point-à-Point (PTP) en action

Emetteur Destinataire

QueueConnectionFactory connectionFactory = (QueueConnectionFactory) messaging.lookup("…");

Queue queue = (Queue) messaging.lookup("…");

QueueConnection connection = connectionFactory.createQueueConnection();

QueueSession session = connection.createQueueSession(…);

QueueSender sender = session.createSender(queue);

String selector = new String("(name = ‘MT System') or (name = ‘mobiliTime'))");

QueueReceiver receiver = session.createReceiver(queue, selector);

Queue

QueueConnectionFactory

QueueSession QueueConnection

QueueSession QueueConnection

+

QueueSender

+

QueueReceiver

TextMessage msg = session.createTextMessage();

msg.setText("…");

sender.send(msg);

TextMessage msg = (TextMessage) receiver.receive();

send receive

(6)

Département Télécommunications, Services & Usages 11

Publication/Abonnement (Pub/Sub)

Éditeur Abonné

Topic

TopicConnectionFactory

A B

x y

TopicConnectionFactory connectionFactory = (TopicConnectionFactory) messaging.lookup("…");

Topic topic = (Topic) messaging.lookup("/A/x");

TopicConnection connection = connectionFactory.createTopicConnection();

TopicSession session = connection.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE);

TopicPublisher publisher = session.createPublisher(topic);

TopicSubscriber subscriber = session.createSubscriber(topic);

Subscriber.setMessageListener(listener);

TopicSession TopicConnection

TopicSession TopicConnection

+

TopicPublisher publish

TopicSubscriber +

Listener onMessage

void onMessage(Message msg) throws JMSException { // unpack and handle the message

msg.acknowledge();

}

publisher.publish(msg);

Arbre et Grappe de Rubriques

Une rubrique (Topic) peut être hiérarchisée ou groupée

Une hiérarchie ou une grappe de rubriques (Topic Tree, Clustered Topic) peut être distribuée sur plusieurs serveurs JMS

(7)

Département Télécommunications, Services & Usages 13

Modèles de Middleware

Centralisé (Hub, Spoke)

Distribué (Bus)

Partitionné

(Snowflake)

JORAM

JORAM – MOM Distribué

Appli. AAppli. BAppli. C Appli. DAppli. E

Appli. F

Une vision pour les applications d’un unique MOM

(8)

Département Télécommunications, Services & Usages 15

JORAM – Serveur d’agents

Bus logiciel à base d’agents communicants

Agents = objets réactifs de type Proxy

Persistants : fonction «store and forward »

Légers : infrastructure d’exécution partagée au sein d’un Serveur d’Agents

Modèle événement / réaction asynchrone

Événement : changement d’état significatif du système auquel un ou plusieurs agents réagissent

Événement Notification

Réaction fonction dans la classe Agent

Une architecture distribuée

Infrastructure basée sur un bus à messages

Acheminement des notifications Exécution de la réaction du destinataire

Distribution : forte interconnexion des bus locaux

(9)

Département Télécommunications, Services & Usages 17

Les propriétés de la plate-forme

Persistance

Sauvegarde des agents et notifications

Atomicité

Cohérence garantie par un moniteur transactionnel

Persistance + Atomicité = Fiabilité

Une notification est délivrée une et une seule fois

Ordonnancement causal

Les notification sont délivrées selon un ordre causal

B

C A

JORAM et JMS

JORAM est l’interface JMS du MOM

Les queueset topicssont des agents

Les messages sont encapsulés dans des notifications

Délivrance asynchrone

Garantie de délivrance

Reprise après panne

Apports de l’infrastructure à agents

Architecture totalement distribuée Scalabilité

(10)

Département Télécommunications, Services & Usages 19

JMS via le MOM JORAM

Clients JMS

QueueSender

QueueSession

QueueConnection

queue

Client 1Client 1Client 1Client 1

QueueReceiver QueueSession Client 2Client 2Client 2Client 2

QueueConnection

Connexion TCP

MOM JORAM

Message JMS

Message JMS

Connexion TCP

Notification

Notification Agent Proxy

Agent ProxyAgent Proxy Agent Proxy

Agent Proxy Agent Proxy Agent Proxy Agent Proxy

Agent Queue Agent QueueAgent Queue Agent Queue

JORAM - Communication Pub/Sub

(11)

Département Télécommunications, Services & Usages 21

JORAM – Bus à messages distribué

Intégration dans JOnAS

JORAM implémente la partie ASF (Application Server Facilities) de la spécification JMS 1.1

Intégration de JORAM en tant que ressource dans un environnement transactionnel distribué tel qu’un serveur EJB

Envoi et réception de messages dans des transactions gérées par le conteneur EJB de JOnAS

Réception asynchrone via les « Message-Driven Beans »

(12)

Département Télécommunications, Services & Usages 23

Administration avec JOnAS

Points forts de JORAM

Architecture distribuée

Facilité de mise en oeuvre Passage à grande échelle

Implémentation complète des « Application Server

Emetteur

Serveur ServeurServeur Serveur 2222 Serveur

ServeurServeur Serveur 1111

Serveur Serveur Serveur Serveur 0000 QueueConnectionFactory QueueConnectionFactoryQueueConnectionFactory QueueConnectionFactory

Queue Queue Queue Queue

QueueConnectionFactory QueueConnectionFactory QueueConnectionFactory QueueConnectionFactory

Récepteur

(13)

Département Télécommunications, Services & Usages 25

Architecture de MT Echange

Service BD package en Java (CERTU.storage.DB)

Manager package en JMS (com.mobilitime.mt_echange)

JMSServer package en JMS (com.mobilitime.mt_echange.jms) ChouetteManager

package en JMS (com.mobilitime.chouette)

DServiceManager package en Java (net.dryade.manager)

JORAMManager package en JMS (com.mobilitime.mt_echange.joram)

SimpleDAO package en Java (com.mobilitime.chouette)

Configuration des Services

Base de données

Files de Messages Pilotes de

Messages Routeurs

Architecture de MT Echange

(14)

Département Télécommunications, Services & Usages 27

Le MOM au sein de la plate-forme J2EE

Servlets JSPs

EJBs WEB Container

Client Container

JOnAS Application Server Browser

Browser Browser Browser

Java Application

JDBC JORAM

JTA JCA JAAS JavaMail

http

rmi

rmi html

public static void

main(…) { EJB Container

JAAS LoginModules &

CallbackHandlers JAAS LoginModules

Method permissions Authentification

AuthentificationAuthentification Authentification

Authorization Authorization Authorization Authorization Security Ctx propagation

Security Ctx

propagation DB

File

LDAP

jonas-realm.xml

Users/pwd/role

Une Finalité du MOM

Services de diffusion

Implémentation rapide des accès aux services Indépendance de la localisation des services Diffusion multi-supports (Wap, PDA, Vocal, i-

Mode,…)

(15)

Département Télécommunications, Services & Usages 29

Démonstration

Références

Documents relatifs

La solution permet d’inscrire dans un élément sécurisé du smartphone tout type d’informations : l’ensemble des titres d’une gamme tarifaire (tickets, carnets,

Pour les services de transport adapté des grandes agglomérations françaises, la répartition des usagers selon leur déficience ou handicap est similaire 10 à celle des services PAM

Le Département de la Seine-Maritime et la Préfecture de la région Normandie, Préfecture de la Seine-Maritime, organisent jusqu’au 31 janvier 2017 une enquête sur l’accessibilité

La solution LIMS d’Utimaco est un système centralisé facilitant toutes les tâches relatives à l’interception légale réalisée par plusieurs autorités de police sur un réseau de

Des opérateurs demandent pour quelles raisons les ristournes commerciales de Belgacom ne sont pas applicables sur les half links alors qu’elles le sont sur les lignes louées

En outre, le numéro 197 stipule que: «Toutes les stations, quel que soit leur objet, doivent être établies et exploitées de manière à ne pas causer de brouillages préjudiciables

téléphone de transition (utilisé temporairement lors du transfert d’un numéro de téléphone), carte d’appel, numéro d’identification personnel (« NIP »), adresse de

Une fois que vous aurez cliqué sur « Valider », vous recevrez un mail de confirmation avec votre identifiant.. 8 Attention : suite à ce mail, vous allez recevoir un numéro