COURS /
JACORB
Fonctionnement de base:
sous windows
Modifier sous Jacob/bin, les fichiers :
sous linux
1) IL FAUT copier le répertoire HELLO fourni sous le répertoire demo de Jacorb 2) pour compiler : appeler: ant sous votre répertoire demo/HELLO 3) pour exécuter, installer ces 2 scripts qui permettent une exécution interactive sous votre répertoire demo/HELLO
runServer.sh contenant ( utiliser le bon chemin de JacORB-2.2.3) : export CLASSPATH="$CLASSPATH:/home/CORBA/JacORB-2.2.3/lib/jacorb.jar:/home/CORBA/JacORB-2.2.3/classes" java hellop.Server hello.ref runClient.sh contenant ( utiliser le bon chemin de JacORB-2.2.3) : export CLASSPATH="$CLASSPATH:/home/CORBA/JacORB-2.2.3/lib/jacorb.jar:/home/CORBA/JacORB-2.2.3/classes" java hellop.Client hello.ref
Application Hello : Version avec Factory et Name Service
Scripts version Hello-Factory-serveur de noms
Remarque:
Différence JACORB et ORBACUS
- Factory est un mot clef et ne passe pas pour la version JACORB. Le type Hello_impl n'est plus automatiquement compatible avec le type Hello.
Utilisez la méthode _this(orb) pour le convertir : ça donne : Hello createHello() {Hello_impl p =new Hello_impl(); return p._this(orb);}
- Le module IDL ne peut pas avoir le même nom que les interfaces qu'il contient :
Interopérabilité JACORB et ORBACUS
- L'IDL doit etre identique : il faut utiliser un module pour encapsuler les déclarations des interfaces IDL
Utilisation d'un serveur de noms
- Le parametre du bind : nc.bind(LeNom, poa.servant_to_reference(f));
- import org.omg.CosNaming.*;
- Etape 1 : enregistrer les objets sous la racine NameComponent[] LeNom = new NameComponent[1]; NameComponent[0]=new NameComponent("Hello","V4");
- ROBUSTESSE : n demarrages du serveur applicatof sans redemarrer le serveur de noms: try{nc.bind(...); }catch (org.ombg.CosNaming.NamingContextPackage.AlreadyBound a) {nc.rebind(....)}
- Etape 2 : enregistrer les objets sous un répertoire que le serveur crée: NameComponent[] LeNom = new NameComponent[2]; = new NameComponent("Hello","V4"); NameComponent[0]=new NameComponent("Binome1","Hello"); NameComponent[1]=new NameComponent("Hello","V4");