Java RMI Y. Laborde Cours LOO - TOA
LE FRAMEWORK : REMOTE METHOD INVOCATION
LE FRAMEWORK RMI : C’est un système d’objets et d’outils permettant l’appel de
méthodes entre objets Java s’exécutant sur des Machines Virtuelles Java (JVM)
différentes.
INFORMATIONS GÉNÉRALES :
- un couple (OD-client, OD-serveur) communique par l’intermédiaire de :
- deux instances de JVM sur une même machine (processus différents),
- deux instances de JVM sur 2 machines distantes (via un réseau) ;
- les espaces d’adressage des JVM sont distincts (gestion mémoire et GC distincts) ;
- les échanges réseau se font à l’aide d’un protocole propriétaire qui utilise la
sérialisation sur le port 1099 : JRMP (Java Remote Method Protocol) ;
- RMI utilise directement les sockets ; les communications sont acheminées via des
url spécifiques dites url-RMI (syntaxe : rmi://<nomServeurRMI>:<port> (par défaut : 1099)
LA SUITE DE DÉVELOPPEMENT RMI :
- le Framework RMI :
- java.rmi (classes et une interface pour les OD-clients – accès aux OD)
- java.rmi.server (classes et interfaces pour les OD-serveurs – création des OD)
- java.rmi.activation (classes et interfaces pour l’activation d’OD)
- java.rmi.dgc (ramasse-miettes réparti qui tient compte des OD client et serveur)
- java.rmi.registry (classes et interfaces pour le service de résolution de noms –
enregistrement et localisation des OD)
- outils et services du Framework RMI :
Principalement :
- un générateur d’amorces (rmic) (outils qui génère des amorces de classes pour les
OD ; ces amorces sont des serveurs proxy qui encapsulent les OD-objets)
- un serveur de noms (rmiregistry) (outils et service de résolution de noms qui
enregistre, maintien et fournit les références distantes aux OD)
- un démon d’activation (rmid) (service d’activation d’OD, démon qui permet de
n’activer des OD qu’au moment où leurs OD-méthodes sont invoquées par un OD-client)
- un RMI garbage collector (dgc) (service de ramasse-miettes étendu aux OD, démon
qui permet de maintenir les objets en vie tant qu’il existe au moins une référence soit du côté
OD-serveur, soit du côté OD-client)
et aussi :
- un protocole réseau RMI (JMRP) (service de protocole pour les échanges réseau RMI ;
utilise le protocole propriétaire (Java Remote Method Protocol) sur le port 1099 par défaut)
- une architecture de liaison RMI (UnicastRemoteObject) (architecture RMI qui
supporte la liaison de type POINT à POINT, i.e. unicast)
- un service de sécurité RMI (RMISecurityManager) (service qui gère la sécurité
des accès aux OD-objets)
- un service de téléchargement RMI (RMIClassLoader) (service de téléchargement
dynamique de byte-code depuis les OD-serveurs vers les OD-clients)