RMI JAVA - e

publicité
RMI JAVA
Introduction
RMI
●
Remote Method Invocation
●
Système client/serveur
●
Invocation distante de méthodes
●
Famille des applications distribuées
Les applications avec des
objets
CAS D'UTILISATION
objet 2
objet 3
objet 1
objet 6
objet 4
objet 5
UNE APPLICATION ORIENTÉE OBJET EST NATURELLEMENT DISTRIBUÉE
Les architectures RMI
MACHINE 1
MACHINE 2
Environnement
d'exécution
Environnement
d'exécution
objet
client
Réseau
objet
serveur
DISTRIBUTION D'OBJETS DANS DES ENVIRONNEMENTS D'EXÉCUTION
DIFFÉRENTS À TRAVERS LE RÉSEAU
RMI et Design pattern PROXY
Sujet
Sujet Réel
Proxy
UN CLIENT RMI NE CONNAÎT QUE L'OBJET MANDATAIRE (PROXY). LE
PROXY PROPOSE LA MÊME INTERFACE QUE L'OBJET DISTANT.
Historique
●
●
RMI a été développé par JavaSoft filiale de
Sun Microsystems
RMI a été livré avec la version JDK1.1
–
19 février 1997
●
RMI est plus simple que CORBA
●
RMI ne fonctionne qu'avec des objets JAVA
●
Couche d'abstraction au dessus de RPC
–
Remote Procedure Call
Principes des architectures RMI
●
Les services sont déclarés par des interfaces
●
Les services sont invoqués via ces interfaces
●
●
●
Le système permet au client d'obtenir un
mandataire local (proxy) du service distant
Le système prend en charge la communication
entre le client et le serveur
Le système peut éventuellement prendre en
charge la localisation du service distant
Principes RMI
La couche RMI transmet au serveur les paramètres nécessaires aux méthodes
invoquées et retourne au client les réponses
RMI côté client
Mandataire
proxy
Client
Réseau
propose la même
interface que celle
implémentée par
le serveur
RMI côté serveur
Interface
Implémentation
Serveur
Avantages de RMI JAVA
●
●
Paradigme objet
Accès transparent aux objets distribués sur
le réseau
●
Prise en charge de l'acheminement
●
Ramasse miettes distribué (DGC)
●
Sécurité avec RMISecurityManager
●
Accès dynamique par l'obtention de
l'implémentation via le réseau
Localisation
●
Retrouver un objet sur le réseau sans avoir
connaissance de son adresse.
–
Retrouver l'objet par son nom
●
●
●
ServiceDeNoms.rechercher(''unObjet'');
Naming.lookup(''unObjet'');
Rien ne distingue une référence d'objet local
d'une référence d'objet distant.
–
refObjetLocal
–
refObjetDistant
Invocation
●
Rien ne distingue une invocation de méthode
sur un objet local d'une invocation sur un
objet distant
–
objetLocal.methode();
–
objetDistant.methode();
RMI
La technologie
Réseau et codage
●
Protocole permettant l'appel de méthodes
entre objets Java s'exécutant
–
dans des JVM différentes
●
●
●
Protocole de transport
–
●
sur la même machine
sur des machines distantes reliées en réseau
Les sockets
Codification de l'information échangée
–
Remote Method Protocol (RMP)
Paramètres et retours
●
●
Les arguments des méthodes distantes
invoquées sont passés par copie et non par
référence
Les classes qui servent d'arguments ou de
valeurs de retour doivent implémenter
–
●
l'interface java.io.Serializable
Tous les types de données sont admis
–
Si le type n'est pas disponible localement, il est
chargé dynamiquement (RMIClassLoader) via le
réseau
Codage et décodage
UnMarshalling
Marshalling
client
JVM 1
Stub
objet
doit implémenter java.io.Serializable
serveur
JVM 2
RMI
format RMP
Skeleton
objet
Gérants de la communication
●
Obtenus par compilation de l'implémentation
du serveur RMI
–
●
Commande rmic
Côté serveur
–
La partie squelette
●
●
Skeleton
Côté client
–
La partie souche
●
Stub
Limites
●
●
●
Le serveur de nom (RMI Registry) doit
résider sur la même machine que le serveur
Pas de pool d'objets (Instance pooling)
Pas de transparence au niveau de la
localisation de la machine distante
●
Possibilité de références d'objet cycliques
●
Les objets serveurs
–
doivent spécialiser UnicastRemoteObject
–
ou être exportés par la méthode exportObject()
Téléchargement