Chapitre 1 : Remote Method Invocation (RMI)
Guillaume Latu
Octobre 2003
Département d'informatique
UFR de Mathématique et Informatique
Université Louis Pasteur – Strasbourg
2. Réalisation d’une application
L’objectif c’est de permettre à des applications
clientes d’invoquer des méthodes sur des objets distants, càd localisés dans
une autre application appelée « serveur ».
RMI constitue un moyen simple de développer des applications
(client/serveur).
Inconvénients :
o
RMI est la
propriété de SUN (mais il est utilisable gratuitement : il fait parti du JAVA
distribué par SUN)
o
Avec RMI,
il n’est pas possible d’interagir avec les objets dans un autre langage
o
RMI est
plus lent que CORBA
Avantages :
o
RMI est plus simple à
mettre en œuvre que CORBA
o
RMI étend la
fonctionnalité de Garbage Collector
o
RMI permet une gestion
de la sécurité (communication)
o
RMI permet à une machine
M1 de créer un objet et de le rendre disponible à une autre application. La
machine M1 est le serveur et les applications utilisent l’objet, les clients
è Pour utiliser un objet distant, un client récupère sur sa machine une
représentation de l’objet distant : le proxy stub. Ce stub implémente
l’interface de l’objet distant.
Interface : (ex : A)
o
Prototype de fonction
o
Constantes au niveau des
attributs de la classe
Implements
o
class B implements A, C,
D extends E { … }
o
permet une forme
d’héritage multiple
i.
Le client appelle une
méthode sur le proxy de l’objet A
ii. Le proxy emballe l’identifiant de la méthode et ses
arguments (sérialisation Marshalling)
iii. La requête est transmise sur le réseau
iv. Le squelette reçoit et dé-sérialise les arguments
v. La méthode est appelée sur l’objet A du serveur
vi. La méthode renvoie le résultat au squelette
vii. Le squelette sérialise le retour de la méthode
viii.
Transmission au proxy de
A
ix. Le proxy déballe le résultat
x. La méthode du proxy retourne le résultat comme une
méthode ordinaire
L’interface |
-
Définition de l’interface des objets accessibles à distance à contrat -
L’implémentation à code pour toutes les
méthodes définies dans l’interface (code destiné à être exécuté sur le
serveur) |
Le
serveur |
-
Développement du programme qui créer une instance de l’objet exécuté à
distance (A) |
Le
client |
-
Développement d’application accédant à des méthodes de l’objet distant (A) |
Ø
sur
M1 : B.methodeDistante (A,C)
Ø
sur
M2 : B ne connaît pas A et C
Ø
sur
M2 : création automatique des proxy A et C (pas d ‘envoi sur le
réseau)