Chapitre 4 Le Middleware Java RMI

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 5

Chapitre 4 : Le Middleware Java RMI

Introduction
Motivations :

o Interfaces complexes des systèmes d'exploitation et de communication.

o Gestion de l'hétérogénéité (matérielle et logicielle).

o Simplification des mécanismes de bas niveau.

o Répartition des applications de manière transparente.

 Solution :

o Une couche logicielle intermédiaire appelée middleware entre les niveaux bas
(systèmes/réseaux) et les niveaux hauts (applications).

Qu'est-ce qu'un Middleware ?

 Une couche logicielle entre les applications réparties et le système d'exploitation/réseau.

 Offre des services de communication pour faciliter les interactions client/serveur.

 Gère :

o Protocole applicatif.

o API d'accès à la couche transport.

o Services complémentaires.

Fonctions principales du Middleware

 Masquer l'hétérogénéité : Compatibilité entre machines, systèmes et protocoles.

 API de haut niveau : Simplifie le développement d’applications réparties.

 Transparence : Rendre la répartition invisible pour les développeurs.

 Services intégrés : Par exemple, le service de nommage pour localiser les éléments
connectés.

Service de nommage dans un Middleware

 Enregistre et identifie les éléments connectés.

 Permet de rechercher des éléments ou services en fonction de leur nom.

 Une fois la référence trouvée, les opérations distantes peuvent être appelées.

Les grandes familles de Middleware

1. Appel d'opération à distance :

o Exemples : RPC, CORBA, Java RMI.

o Interaction forte entre client et serveur, appel synchrone.

2. Middleware orienté messages (MOM) :


o Exemples : CORBA Event Service, Java JMS.

o Communication asynchrone, dynamique et 1:n (diffusion de messages).

Architecture générale du Middleware RPC/RMI

 Éléments générés automatiquement :

o Talon (Stub) : Proxy du côté client avec la même interface que le serveur.

o Squelette (Skeleton) : Reçoit les requêtes clients côté serveur.

 Éléments à développer par l'utilisateur :

o Client : Appelle les opérations distantes.

o Serveur (Servant) : Implémente les opérations exposées via une interface.

Fonctionnement d'un Appel d'Opération à Distance

1. Le client obtient une référence à l'objet distant via un service de nommage.

2. Appel d'une opération sur cette référence (synchrone).

3. Le talon compacte les données d'appel (identifiant opération + paramètres).

4. Transmission des données au squelette via les couches réseau.

5. Le squelette décompacte les données et exécute l'opération sur le serveur.

6. Résultat renvoyé au client après compactage/décompactage.

7. Fin de l'appel, reprise de l'exécution côté client.

Appel Local vs Appel à Distance

 Appel local : Accès direct aux objets.

 Appel distant : Passe par des abstractions fournies par le middleware (transparence).

Java RMI permet d'utiliser des objets distants presque aussi facilement que des objets locaux,
tout en masquant la complexité du réseau et des communications.

Le middleware java RMI

Introduction à Java RMI

 Type de middleware : RPC/RMI, intégré dans Java.

 Objectif : Permettre un modèle objet distribué, uniquement en Java.

 Fonctionnement : Les méthodes des objets distants peuvent être appelées depuis des
JVM distinctes.

 Communication : Utilise TCP/IP et des protocoles standardisés comme Remote Method


Protocol (RMP).

 Avantage : Abstraction des détails bas niveau du réseau pour le développeur.


Rappel sur les interfaces Java

 Une interface est une classe abstraite contenant uniquement des méthodes abstraites.

 Une classe peut implémenter plusieurs interfaces.

 Les interfaces sont essentielles dans RMI, séparant la définition du comportement de son
exécution.

 Les services distants sont définis par une interface Java et implémentés par une classe.

Structure des couches RMI

1. Couche des Stubs et Skeletons :

o Stub : Représentant local de l'objet distant (côté client).

 Emballe/décompresse les données pour la méthode distante.

o Skeleton : Représentant côté serveur (obsolète depuis Java 2).

 Transmet les paramètres et compact les réponses.

o Depuis Java 5, les stubs sont générés dynamiquement à l'exécution via


UnicastRemoteObject.

2. Couche de Référence (Remote Reference Layer) :

o Fournit une référence distante à partir du stub local via le service rmiregistry.

o Utilise des URL sous forme : rmi://hôte:port/nomObjet.

3. Couche Transport :

o Basée sur TCP/IP.

o Gère les connexions et l'écoute des invocations distantes via ServerSocket et


Socket.

o Utilise le protocole RMP (Remote Method Protocol).

Développement avec Java RMI

Côté serveur :

1. Définir une interface avec les méthodes distantes (hérite de java.rmi.Remote).

2. Implémenter cette interface dans une classe.

3. Instancier et enregistrer l'objet dans le registre RMI (rmiregistry).

Côté client :

1. Obtenir la référence de l'objet distant via le registre.

2. Appeler les méthodes distantes via cette référence.


Gestion du registre rmiregistry

 Commandes pour lancer le registre :

o Unix/Linux : $ rmiregistry [port].

o Windows : > start rmiregistry [port].

 Classe java.rmi.Naming : Gère les enregistrements et récupérations d'objets distants via


:

o bind(), rebind(), unbind(), lookup(), et list().

Contraintes sur les interfaces et classes RMI

1. Interface :

o Hérite de java.rmi.Remote.

o Méthodes doivent lever RemoteException.

2. Classe implémentant l'interface :

o Utilise UnicastRemoteObject pour l'exportation.

o Doit prévoir RemoteException dans son constructeur.

Résumé des étapes

1. Créer une interface distante (Remote).

2. Implémenter cette interface.

3. Exporter l'objet via UnicastRemoteObject.

4. Lancer le registre RMI (rmiregistry).

5. Côté client, rechercher l'objet distant et invoquer ses méthodes.

Naming Service et RMI Registry

 Naming Service : Permet aux clients de trouver des services distants via un annuaire
activé sur un hôte connu (avec un numéro de port connu, souvent 1099).

 rmiregistry : Un service simple inclus avec JNDI pour enregistrer et trouver des objets
distants sur des serveurs.

 RMI Registry : Service de nommage spécifique à RMI.

JNDI (Java Naming and Directory Interface)

 Définition : Une API standard pour accéder à différents services de nommage et


d’annuaire.

 Types de services de nommage :

o DNS : Correspondance entre noms de domaine et adresses IP (internet).


o LDAP : Annuaire hiérarchique.

o NIS : Nommage réseau développé par Sun Microsystems.

o COS Naming : Utilisé par Corba.

o RMI Registry : Utilisé par RMI.

 Avantages :

o Associe un nom unique à un objet.

o Offre une représentation hiérarchique des objets (annuaire).

o Permet une recherche standardisée via des pilotes (implémentation SPI).

Architecture de JNDI

1. API JNDI :

o Utilisée par les applications Java pour accéder à différents services de nommage et
d’annuaire.

2. SPI (Service Provider Interface) :

o Relie l’API aux services de manière transparente via des implémentations


spécifiques.

3. Disponibilité :

o Inclus dans le JDK depuis la version 1.3.

o Nécessite des classes JNDI et au moins un SPI (provider JNDI).

Vous aimerez peut-être aussi