Systèmes Distribués – TD4 Introduction à CORBA : Premiers pas

Systèmes Distribués – TD4
Introduction à CORBA : Premiers pas M. Diouri
Systèmes Distribués – TD4
Introduction à CORBA : Premiers pas
03 octobre 2012
Ce TP a pour but de s’initier à CORBA en travaillant avec Java sous un environnement
Linux. Quelques liens vers des cours sont référencés sur ma page personnelle :
http://perso.ens-lyon.fr/mehdi.diouri/teaching.html
Dans un premier temps, il est demandé de prendre connaissance de ces liens. Ensuite,
afin de prendre en main ce nouvel outil, vous suivrez les étapes de développement de votre
première application CORBA : Hello World !. Pour finir, vous développerez une application
simple.
Premier exemple : Hello World
Etape 1 : Définition de l’interface avec le langage IDL : Hello.idl
Voici l’interface IDL de l’application que nous vous proposons d’implémenter dans un fi-
chier Hello.idl :
module exo1 {
interface Hello {
void sayHello();
};
};
Etape 2 : Génération des classes nécessaires à la distribution
Compiler l’idl grâce à la commande :
>mkdir generated
>idlj -td generated -emitAll -fall Hello.idl
Vous verrez ainsi apparaître des fichiers dans le dossier generated :
HelloHelper.java : classe utilitaire contenant notamment une méthode narrow, servant
à remplacer le cast java
HelloHolder.java : classe gérant les paramètres out (non pris en charge par java)
Hello.java : "cablage" CORBA
1
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
Systèmes Distribués – TD4
Introduction à CORBA : Premiers pas M. Diouri
Etape 5 : Implémentation du client : HelloClient.java
Voici un exemple d’implémentation de client HelloClient.java
package exo1;
import java.io.*;
import org.omg.CORBA.*;
public class HelloClient {
public static void main(String[] args) {
try {
// Initialisation de l’ORB
ORB orb = ORB.init(args, null);
// Récupération de la référence du servant
BufferedReader fileReader = new BufferedReader(new FileReader("ObjectRef"));
String stringIOR = fileReader.readLine();
fileReader.close();
// Création, à partir de la référence du servant, d’un proxy local
Hello proxyHello = HelloHelper.narrow(orb.string_to_object(stringIOR));
// Invocation de méthodes distantes
System.out.println ("Invoking object hello");
............................................................
%proxyHello.sayHello();
} catch (Exception e) {
System.err.println("Error: ": + e);
e.printStackTrace(System.out);
}
}
}
Etape 6 : Test de l’application
Pour tester l’application, vous devez compiler tous les fichiers .java de votre application.
javac fichier.java
Pour cela, vous pouvez vous servir d’un fichier Makefile.
Ensuite, il faut lancer le serveur dans un shell grâce à la commande suivante :
java HelloServer
Enfin, il faut lancer le client dans un autre shell grâce à la commande suivante :
java HelloClient
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !