Ce document est destiné aux étudiants de l'Université Abdelhamid Mehri – Constantine 2, Faculté des Nouvelles Technologies de l'Information et de la Communication, Département d’Informatique Fondamentale et ses Applications, dans le cadre du Master 1 Réseaux et Systèmes Distribués.
Il couvre les notions suivantes:
- Introduction aux objets répartis
- Java RMI (Remote Method Invocation)
- Étapes pour créer et appeler un objet distant avec RMI
- Conclusion
Cours Master 1 Reseaux et Systemes Distribues -Développement d'applications réparties
Télécharger PDFSommaire
- Introduction
- Notion clé pour les objets répartis
- Java RMI (Remote Method Invocation)
- Les différentes étapes pour créer un objet distant et l'appeler avec RMI
- Conclusion
1. Introduction
Par des opérations de “bas niveau”
- Utilisation de primitives du système de communication
- Exemple : sockets
- Mode non connecté (UDP)
- Mode connecté (TCP)
Par des opérations de “haut niveau”
- Utilisation d’un middleware spécialisé
- Contexte : langage de programmation
- Appel de procédure à distance
- Contexte : objets répartis
- Appel de méthodes, création d’objets à distance
2. Notion clé pour les objets répartis
“The glue which connects objects which are distributed across multiple heterogeneous computer systems”
“An extension of the operating system which provides a transparent communication layer to the applications”
“A software layer that serves to shield the application of the heterogeneity of the underlying computer platforms and networks”
3. Java RMI (Remote Method Invocation)
“Middleware” : couche de logiciel (réparti) destinée à
- masquer l’hétérogénéité des machines et systèmes
- masquer la répartition des traitements et données
- fournir une interface commode aux applications (modèle de programmation + API)
Intérêt des objets pour la construction d’applications réparties
- Encapsulation
- L’interface (méthodes + attributs) est la seule voie d’accès à l’état interne, non directement accessible
- Classes et instances
- Mécanismes de génération d’exemplaires conformes à un même modèle
- Héritage
- Mécanisme de spécialisation : facilite récupération et réutilisation de l’existant
- Polymorphisme
- Mises en œuvre diverses des fonctions d’une interface
- Remplacement d’un objet par un autre si interfaces “compatibles”
- Facilite l’évolution et l’adaptation des applications
4. Les différentes étapes pour créer un objet distant et l'appeler avec RMI
Référence = moyen d’accès à un objet distant
- En général une référence est “opaque” (son contenu ne peut pas être directement exploité) ; elle n’est utilisable que via un mécanisme d’appel à distance
- Contenu d’une référence
- Toutes les informations nécessaires pour atteindre physiquement l’objet
- Site de résidence
- Numéro de porte sur le site
- Localisation interne au serveur
- En Java RMI : la référence est simplement le talon client (stub)
- En CORBA : format de référence spécifié (IOR : Interoperable Object Reference)
- En DCOM : format “propriétaire”
Motivation : construction d’applications réparties avec Java
Appel de méthode au lieu d’appel de procédure
- Principe : même schéma que RPC
- Le programmeur fournit
- Une (ou plusieurs) description(s) d’interface
- Ici pas d’IDL séparé : Java sert d’IDL
- Le programme du serveur
- Objets réalisant les interfaces
- Serveur
- Le programme du client
- L’environnement Java fournit
- Un générateur de talons (rmic)
- Un service de noms (Object Registry)
Interface
L’interface d’un objet distant (Remote) est celle d’un objet Java, avec quelques règles d’usage :
- L’interface distante doit être publique
- L’interface distante doit étendre l’interface java.rmi.Remote
- Chaque méthode doit déclarer au moins l’exception java.rmi.RemoteException
Passage d’objets en paramètre
- Les objets locaux sont passés par valeur (copie) et doivent être sérialisables (étendent l’interface java.io.Serializable)
- Les objets distants sont passés par référence et sont désignés par leur interface
5. Conclusion
Le but de RMI est de permettre l'appel, l'exécution et le renvoi du résultat d'une méthode exécutée dans une machine virtuelle différente de celle de l'objet l'appelant.
Cette machine virtuelle peut être sur une machine différente pourvu qu'elle soit accessible par le réseau.
La machine sur laquelle s'exécute la méthode distante est appelée serveur.
L'appel coté client d'une telle méthode reste simple. Il consiste à obtenir une référence sur l'objet distant puis à appeler la méthode à partir de cette référence.
La technologie RMI se charge de rendre transparente la localisation de l'objet distant, son appel et le renvoi du résultat.
Elle utilise deux classes particulières, le stub et le skeleton qui doivent être générées avec l'outil rmic fourni avec le JDK.
Le stub est une classe qui se situe côté client et le skeleton est son homologue coté serveur.
Ces deux classes se chargent d'assurer tous les mécanismes d'appel, de communication, d'exécution, de renvoi et de réception du résultat.
Développement coté serveur
- La définition d'une interface qui contient les méthodes qui peuvent être appelées à distance
- L'écriture d'une classe qui implémente cette interface
- L'écriture d'une classe qui instanciera l'objet et l'enregistrera en lui affectant un nom dans le registre de noms RMI (RMI Registry)
Développement côté client
- L'obtention d'une référence sur l'objet distant à partir de son nom
- L'appel à la méthode à partir de cette référence
Remarque: il faut générer les classes stub et skeleton en exécutant le programme rmic avec le fichier source de l'objet distant.
Extension du RPC aux objets
- Permet l’accès à des objets distants
- Permet d’étendre l’environnement local par chargement dynamique de code
- Pas de langage séparé de description d’interfaces (IDL fourni par Java)
Limitations
- Environnement restreint à un langage unique (Java)
- Mais passerelles possibles, en particulier RMI/IIOP
- Services réduits au minimum
- Service élémentaire de noms (sans attributs)
- Pas de services additionnels
- Duplication d’objets
- Transactions
FAQ
Qu'est-ce que Java RMI ?
Java RMI (Remote Method Invocation) est une technologie qui permet l'appel de méthodes d'objets distants dans un environnement Java.
Comment fonctionne Java RMI ?
Java RMI utilise des classes stub et skeleton pour assurer les mécanismes d'appel, de communication, d'exécution, de renvoi et de réception du résultat des méthodes distantes.
Quelles sont les limitations de Java RMI ?
Java RMI est restreint à un environnement Java et ne supporte pas de services additionnels comme la duplication d’objets ou les transactions.