13.07.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!