Version distribu´ee 4/4 : impl´ementation de l’objet
IDoit fournir un constructeur (mˆeme vide), qui lance l’exception
RemoteException()
public class RmiObjet
extends UnicastRemoteObject // classe Java
imp lem ents ObjetIntf // mon interf ace
{
// co ns tr uc teu r ( vide ici )
public RmiObjet () throws Rem oteEx ception
{}
// im pl´em entat ion de la m´etho de
public String getMessage () {
return " Hello World " ;
}
}
17/20
Compilation
IEn pratique : dans les sources, il faudra importer le package RMI via
les lignes suivantes :
import java . rmi .*;
import java . rmi . se rver .*;
import java . rmi . Na ming .*;
18/20
Lancement du service de nommage
IAvant de lancer le serveur, il faut que le service soit lanc´e en
m´emoire.
Ceci se fait depuis le shell :
ISous Linux : rmiregistry&
ISous Windows : start rmiregistry
IOn peut aussi faire en sorte que ce soit le serveur qui le lance au
d´emarrage, via le code suivant :
try {
LocateRegistry.createRegistry(1099);
Syste m . out . p rin tln ( " RMI re gis tr y
created " ) ;
}
catch ( Remo teExc eptio n e ) {
Syste m . out . p rin tln ( " RMI re gis tr y
already exists ." );
}
Rem : il faudra ajouter la ligne import java.rmi.Registry.*;
19/20
Service de nommage
La classe java.rmi.Naming fournit les m´ethodes suivantes :
ICot´e serveur :
Ivoid bind(String name, Remote obj)
R´ef´erencement de l’objet dans le registre RMI.
Ivoid rebind(String name, Remote obj)
Remplacement d’objet dans le registre RMI (ne lance pas d’exception
s’il existe d´ej`a dans le registre)
Ivoid unbind(String name)
Supprime l’association, et termine le thread associ´e `a l’objet.
ICot´e client :
IRemote lookup(String name)
Renvoie une r´ef´erence sur un objet distant (un ”stub”) dans le
registre RMI, `a partir de son nom complet.
IString[] list(String name)
Renvoie un tableau contenant les noms de tous les objets distants
contenus dans le registre RMI
20/20