Conception et réalisation d'un syst`eme d'instrumentation ... - CoDE
Conception et réalisation d'un syst`eme d'instrumentation ... - CoDE
Conception et réalisation d'un syst`eme d'instrumentation ... - CoDE
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
3.3. RMI<br />
3.3.1 Le modèle proposé par Java : RMI<br />
Comme nous l’avons évoqué, la Remote M<strong>et</strong>hod Invocation (RMI) de Java s’ apparente<br />
au schéma classique de distribution d’obj<strong>et</strong>s sur un bus réseau, à c<strong>et</strong>te exception près que<br />
le but recherché n’ est pas ici d’interfacer tous les langages possibles mais bien de concevoir<br />
des applications distribuées issues d’un même langage : Java. Ces applications seront<br />
donc ameneés à résider sur des machines virtuelles [14] différentes <strong>et</strong> non sur des plateformes<br />
différentes. C<strong>et</strong>te différence apparaîtra fondamentale dans le paragraphe suivant.<br />
La figure 3.3 présente les éléments d’une application écrite au moyen de RMI.<br />
Fig. 3.3 – Protocoles mis en oeuvre par RMI<br />
Dans un premier temps, Le serveur appelle le registry afin d’associer un nom symbolique<br />
avec l’obj<strong>et</strong> qu’il m<strong>et</strong> à disposition sur le bus. Le client peut alors entamer un processus de<br />
recherche <strong>et</strong> interroger le registry sur la présence ou non d’un nom de service disponible.<br />
En cas de succès, il obtient alors une référence sur l’obj<strong>et</strong> correspondant <strong>et</strong> est à même<br />
d’invoquer sur ce dernier une méthode particulière.<br />
L’ensemble des méthodes disponibles auprès du serveur est décrite au moyen d’une<br />
interface connue du client <strong>et</strong> du serveur. C<strong>et</strong>te approche est semblable à celle proposeé<br />
par CORBA au travers de l’IDL. Rappelons à c<strong>et</strong> eff<strong>et</strong> qu’une interface est un formalisme<br />
énonçant le comportement d’une obj<strong>et</strong>, mais ne réalisant pas l’implémentation de la classe.<br />
Il s’agit donc d’un ”contrat” que s’engage à remplir la classe implémentant l’interface, dont<br />
la <strong>réalisation</strong> finale est discrétionnaire.<br />
Comme nous le verrons dans la section suivante, des serveurs Web sont également<br />
utilisés par RMI afin de perm<strong>et</strong>tre le transfert de bytecode entre le client <strong>et</strong> le serveur.<br />
Insistons bien ici sur le fait qu’il ne s’agit pas de la marshallisation proprement dite d’obj<strong>et</strong>s,<br />
tels que les paramètres des méthodes activées, mais bien de transférer, le besoin échéant,<br />
des classes depuis un intervenant jusqu’à l’autre. Ce mécanisme n’a pas d’équivalent en<br />
CORBA <strong>et</strong> est appelé transfert dynamique de code mobile.<br />
33