![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Introduction à RMI |
RMI (Remote Method Invocation) est une API Java permettant de manipuler des objets distants (c'est-à-dire un objet instancié sur une autre machine virtuelle, éventuellement sur une autre machine du réseau) de manière transparente pour l'utilisateur, c'est-à-dire de la même façon que si l'objet était sur la machine virtuelle (JVM) de la machine locale.
Ainsi un serveur permet à un client d'invoquer des méthodes à distance sur un objet qu'il instancie. Deux machines virtuelles sont donc nécessaires (une sur le serveur et une sur le client) et l'ensemble des communications se fait en Java.
On dit généralement que RMI est une solution "tout Java", contrairement à la norme Corba de l'OMG (Object Management Group) permettant de manipuler des objets à distance avec n'importe quel langage. Corba est toutefois beaucoup plus compliqué à mettre en oeuvre, c'est la raison pour laquelle de nombreux développeurs se tournent généralement vers RMI.
Structure des couches RMI |
Les connexions et les transferts de données dans RMI sont effectuées par Java
sur TCP/IP grâce à un protocole propriétaire (JRMP, Java
remote Method Control) sur le port 1099.
A partir de Java 2 version 1.3, les communications entre client et serveur s'effectuent
grâce au protocole RMI-IIOP (Internet Inter-Orb Protocol), un protocole normalisé
par l'OMG (Object Management Group) et utilisé dans l'architecture CORBA.
La transmission de données se fait à travers un système de couches, basées sur le modèle OSI afin de garantir une interopérabilité entre les programmes et les versions de Java.
Ainsi, une application client-serveur basé sur RMI met ainsi en oeuvre trois composantes :