import java.rmi.*;
public class HelloServer {
public static void main(String[] args) {
try {
Naming.rebind("Hello1",
new Hello("Hello world!"));
System.out.println("Serveur prêt!");
} catch (Exception e) {
System.err.println("Erreur serveur " + e);
}
}
Dans le code donné, l'objet est instancié par new Hello("Hello world!") et
enregistré dans le service de noms à l'aide de Naming.rebind("Hello1",…). Cela veut
dire que l'objet est enregistré sous le nom de Hello1, tout client recherchant un objet portant
ce nom, retrouvera la référence de cet objet distant.
2.4 Le programme client
Le client recherche la référence de l'objet distant et appelle la méthode sayHello.
import java.rmi.*;
import java.rmi.server.*;
public class HelloClient {
public static void main(String[] args) {
try {
HelloInterface hello = (HelloInterface)
Naming.lookup(rmi://goedel.imag.fr/Hello1);
System.out.println(hello.sayHello());
} catch (Exception e) {
System.err.println("Erreur client " + e);
}
}
}
La recherche de la référence de l'objet se fait en utilisant Naming.lookup. Le nom
qui est recherché est bien Hello1 avec des informations en plus, disant que l'on va chercher
l'objet sur goedel.imag.fr. L'information que l'objet tournera sur goedel.imag.fr est donnée
lolrs du lancement du serveur (cf plus loin).
2.5 La compilation
− Sur la machine serveur ; les interfaces et le programme serveur
javac HelloInterface.java Hello.java HelloServer.java
− Sur la machine serveur : créer les talons client et serveur pour les objets appelés à
distance (à partir de leurs interfaces)
rmic -keep Hello
NB. -keep permet de garder les sources des classes générées