Subject: Un peu de Corba...

From: Pierre-Yves Gibello <[email-masked]>
Date: Thu, 26 Feb 2004 18:21:53 +0100

Bonjour,

Dans l'état actuel des choses, je parviens à faire fonctionner 
correctement le serveur persistent... sauf etherealize() qui n'est 
jamais appelé !
Comment créer la condition qui l'appelle, je l'ignore, un "shutdown" 
dans servertool ne le déclenche pas.

Dans un premier temps, le code qui se trouve sur 
http://java.sun.com/j2se/1.4.2/docs/guide/idl/servantactivator.html 
tourne bien.

On peut le faire tourner comme suit:
- Récupérer Hello.idl, HelloImpl.java, Server.java et Client.java
- Ensuite, appliquer la procédure suivante :

Compiler :
mkdir classes
idlj -fall -verbose -td classes Hello.idl
javac -d classes -classpath classes *.java

Lancer :
orbd -ORBInitialHost localhost -ORBInitialPort 1950 -ORBDebug orbd
java -cp ./classes -Dorg.omg.CORBA.ORBInitialHost=localhost 
-Dorg.omg.CORBA.ORBInitialPort=1950 Server
java -cp ./classes -Dorg.omg.CORBA.ORBInitialHost=localhost 
-Dorg.omg.CORBA.ORBInitialPort=1950 Client

Dans un 2ème temps, j'ai ajouté les Policy USER_ID et PERSISTENT.

USER_ID ne pose pas de problème, il suffit de faire
 org.omg.CORBA.Object objectRef = poa1.create_reference_with_id(
                "123".getBytes(), HelloHelper.id());
au lieu de
 org.omg.CORBA.Object objectRef = poa1.create_reference(
                HelloHelper.id());
et tout marche bien.

PERSISTENT nécessite par contre de lancer le serveur avec "servertool".

Dans ce cas, tout fonctionne bien, sauf etherealize() !
Par exemple, si on arrête le serveur avec "shutdown -serverid ..." et 
qu'on relance le client, le serveur est redémarré et incarnate() est 
appelé... mais etherealize() n'a jamais été appelé au shutdown...

Ci-joint, mon code modifié. Pour le lancer, même procédure que 
ci-dessus, sauf qu'il faut lancer le serveur dans servertool.

On essaie d'éclaircir tout ça demain...

Cordialement,
 Pierre-Yves Gibello - ExperLog