Systèmes Distribués – TD4
Introduction à CORBA : Premiers pas M. Diouri
–HelloOperations.java : traduction java de l’idl
–HelloPOA.java : squelette (Portable Object Adapter)
–_HelloStub.java : stub
Etape 3 : Implémentation de l’objet servant : HelloImpl.java.
Il s’agit là du code fonctionnel de l’objet distribué.
Voici une implémentation que l’on propose dans un fichier HelloImpl.java
package exo1;
import java.util.*;
import java.net.*;
public class HelloImpl extends HelloPOA {
//Déclaration éventuelle des attributs de la classe (en private)
//Déclaration éventuelle de variables auxiliaires.
//construction de la classe
public HelloImpl() {
super();
// Instanciation éventuelle des attributs de la classe implémentée
}
public void sayHello() {
System.err.println("Hello World !");
}
}}
Etape 4 : Implémentation du serveur : HelloServer
Voici un exemple d’implémentation de serveur HelloServer.java
package exo1;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;
import java.io.*;
public class HelloServer {
public static void main(String args[]) {
try{
// Création et initialisation de l’ORB
ORB orb = ORB.init(args, null);
// Récupération de référence et activation du POA
POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootPOA.the_POAManager().activate();
// Création et initialisation de l’objet servant
%HelloImpl hello = new HelloImpl();
..................................................................
// Récupération du servant et écriture dans un fichier
Hello obj = HelloHelper.narrow(rootPOA.servant_to_reference(hello));
PrintWriter file = new PrintWriter("ObjectRef");
file.println(orb.object_to_string(obj));
file.close();
System.out.println("Server is ready");
// Mise en attente des requêtes provenant des clients
orb.run();
} catch (Exception e) {
System.err.println("Error: ": + e);
e.printStackTrace(System.out);
}
}
}
2