1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
import java.io.FileWriter;
import org.omg.CORBA.ORB;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
public class serveurEsclave {
public static void main( String[] args ) throws Exception {
/**
* Primitive (obligatoire) d'initialisation de l'ORB.
* On lui passe les param?res de la ligne de commande.
* Le 2nd param?re (null) est de type java.util.Properties
* (utilisable si on a des param?res additionnels
* ?transmettre ?l'ORB.
*/
ORB orb = ORB.init(args, null );
/**
* Les objets CORBA sont pris en charge par un POA.
* Le POA par d?aut s'appelle RootPOA qu'il est
* n?essaire d'activer.
* La s?uence d'appel suivant est "impos?" par l'API CORBA
* (on a pas le choix).
*
* Comme tout "composant" de base le RootPOA se r?up?e
* avec un appel ?resolve_initial_references() qui retourne
* un org.omg.CORBA.Object
* (attention nom complet obligatoire, sinon confusion
* avec java.lang.Object).
* L'objet retourn?est en fait un POA.
* Pour avoir acc? ?ses m?hodes, il faut le "caster"
* vers l'interface POA.
* Comme tout cast CORBA, il faut passer par la m?hode
* narrow d'une classe Helper.
* On peut alors appeller la primitive activate().
*/
org.omg.CORBA.Object rootobj =orb.resolve_initial_references("RootPOA");
POA rootpoa = POAHelper.narrow(rootobj);
rootpoa.the_POAManager().activate();
/**
* On instancie la classe.
* Dans le vocabulaire CORBA, on cr? un servant.
* On enregistre ce servant dans le POA
* (primitive servant_to_reference).
* On r?up?e un object CORBA.
* Ici, l'association est simple: 1 servant <-> 1 objet CORBA
*/
webServerItfIMPL servant=new webServerItfIMPL();
/** ---- INSTANCIATION DE webserveur ---- */
org.omg.CORBA.Object obj =rootpoa.servant_to_reference(servant);
/**
* Enregistre la r??ence d'objet CORBA (IOR) dans un fichier.
* L'IOR s'obtient par la primitive object_to_string de l'ORB.
* Ce fichier sera lu par le client.
*/
String ior = orb.object_to_string(obj);
FileWriter fw =new FileWriter("webserver.ior");
fw.write(ior);
fw.close();
//System.out.println( ior );
/**
* On met l'ORB en attente de requ?es client.
* Tant que l'on n'a pas fait orb.run(),
* le(s) objet(s) cr?s) ne r?ond(ent) pas aux clients.
* Ce programme continue ?"tourner"
* tant que l'on ne fait pas Ctrl-C
*/
System.out.println( "Serveur pret" );
orb.run();
}
} |
Partager