RMI
Remote Method Invocation
L’objectif: pouvoir invoquer de manière transparente pour le programmeur une méthode sur un objet distant. Le
serveur et le client ne s’exécutant pas forcement sur la même JVM (Java Virtual Machine).
Avantages, inconvénients:
+ RMI est simple à mettre en œuvre
+ RMI étend le « garbage Collector » de Java
+ RMI permet une gestion de la sécurité élémentaire
- RMI est la propriété de SUN
- RMI n’est pas inter opérable (pas d’interactions facile avec des langages autres que Java)
- RMI est un peu plus lent que CORBA
Le serveur héberge des objets accessibles à distance. Le client possède des objets qu’ils croit locaux mais qui
sont en fait sur le serveur.
Le proxy (représentant l’objet distant) a la même interface que l’objet distant.
Scénario d’un appel distant:
1) Le client invoque une méthode sur le proxy
2) Le proxy sérialise les paramètres et le nom de la méthode
3) Requête transmise sur le réseau
4) Le squelette reçoit et désérialise la requête
5) La méthode est invoquée dans la JVM du serveur
6) Le squelette emballe, sérialise le résultat
7) Transmission sur le réseau
8) Le proxy désérialise le résultat
9) Le proxy renvoie le retour de l’invocation distante
1) Développement d’une application RMI
Le déroulement typique d’un développement :
- la définition de l’interface d’appel aux objets distants. L’interface définit le contrat client - serveur
- la programmation d’une implémentation des méthodes des objets distants
- développer le serveur qui instancie des objets accessibles à distance
- développer le client qui utilise les objets distants en faisant des invocations sur ces objets
Compilation / Déploiement
• javac –java
• rmic MesgImpl #création proxy/squelette
• rmiregistry [port]
• java serveur 1099
Proxy S
oD