100% ont trouvé ce document utile (1 vote)
326 vues4 pages

TP: Corba: Configurations

Ce document décrit les étapes pour créer une application client-serveur CORBA simple avec une interface HelloWorld. Il explique ensuite comment développer une application plus complexe offrant des services de calcul sur des nombres complexes.

Transféré par

Saad Said
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
326 vues4 pages

TP: Corba: Configurations

Ce document décrit les étapes pour créer une application client-serveur CORBA simple avec une interface HelloWorld. Il explique ensuite comment développer une application plus complexe offrant des services de calcul sur des nombres complexes.

Transféré par

Saad Said
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 4

P.O.

O (JAVA avancé)

TP: CORBA
Configurations
1- Télécharger et installer JDK1.8 depuis
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
2- Ajouter le chemin du JDK1.8 dans les variables d’environnement
https://www.youtube.com/watch?v=l1VxWWubxFo
3- Ajouter JDK1.8 Au Eclipse et Créer un nouveau projet avec JDK8
https://www.youtube.com/watch?v=V7V3INd82Xw

Exercice 1
Nous voulons créer deux applications Client / Serveur qui communiquent avec le bus CORBA qui va
afficher un message de bienvenue.

1- La première étape est de créer le ficher IDL. Ci-dessou l’interface sur laquelle nous allons travailler

module HelloWorldApp{
interface Hello{
attribute string HelloMessage;
};
};
2- On doit compiler le fichier IDL, on ouvre l’invite de commande dans le dossier où se trouve
ce fichier et on fait la commande suivante :

idlj -fall Helloworld.idl


Après la compilation, le compilateur va générer un dossier contenant ces fichiers :

3- Maintenant on va créer un nouveau package pour le serveur, et on créer une classe du


Servant et en redéfinissant les méthodes et les attributs.

package HelloWorldServer;

import org.omg.CORBA.ORB;

import HelloWorldApp.HelloPOA;

public class HelloServant extends HelloPOA {


private String message= "Bonjour tous Le monde !!";
private ORB orb;

public void setOrb(ORB orb) {


this.orb = orb;

1
P.O.O (JAVA avancé)

@Override
public String HelloMessage() {
// TODO Auto-generated method stub
return message;
}

@Override
public void HelloMessage(String newHelloMessage) {
message = newHelloMessage;
}

4- Maintenant en doit faire le Main de notre serveur


package HelloWorldServer;

import org.omg.CORBA.ORB;
import org.omg.CosNaming.*;
import org.omg.PortableServer.*;

import HelloWorldApp.*;

public class Main {


public static void main(String[] args) {
try{

ORB orb = ORB.init(args, null);

POA rootpoa =
POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootpoa.the_POAManager().activate();

HelloServant helloservant = new HelloServant();


helloservant.setOrb(orb);

org.omg.CORBA.Object ref =
rootpoa.servant_to_reference(helloservant);
Hello href = HelloHelper.narrow(ref);

org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContextExt ncRef =
NamingContextExtHelper.narrow(objRef);

String name = "Hello";


NameComponent path[] = ncRef.to_name( name );
ncRef.rebind(path, href);

System.out.println("HelloWorldServer ready and


waiting ...");

for (;;) {
orb.run();
}
}

catch (Exception e) {
System.err.println("ERROR: " + e);

2
P.O.O (JAVA avancé)

e.printStackTrace(System.out);
}

}
}
5- Le Main du coté Client
package HelloWorldClient;

import org.omg.CORBA.ORB;
import org.omg.CosNaming.*;

import HelloWorldApp.*;

public class Main {

static Hello hello;


public static void main(String args[])
{
try{
ORB orb = ORB.init(args, null);

org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContextExt ncRef =
NamingContextExtHelper.narrow(objRef);
String name = "Hello";
hello = HelloHelper.narrow(ncRef.resolve_str(name));

System.out.println("Obtained a handle on server object:


" + hello);
System.out.println(hello.HelloMessage());

} catch (Exception e) {
System.out.println("ERROR : " + e) ;
e.printStackTrace(System.out);
}
}

}
6- Avant de lancer les deux programmes, on doit démarrer le service ORB depuis une invite de
commande

Et tnameserv -ORBInitialPort 9999


on doit ajouter l’arguments suivant au serveur et client avant de les lancer

-ORBInitialPort 9999
7- En lance les deux programmes

3
P.O.O (JAVA avancé)

Exercice 2
Développer une application client-serveur Corba dans laquelle le serveur offre les services distants
suivant au client :

1. L'addition de deux nombres complexes.


2. La multiplication de deux nombres complexes
3. L'affichage d'un nombre complexe

module ComplexeApp{
struct Complexe{
double re;
double im;
};
interface ComplexeOpr{
Complexe sommeComplexe(in Complexe c1, in Complexe c2);
Complexe produitComplexe(in Complexe c1, in Complexe c2);
string afficheComplexe(in Complexe c);
};
};

Vous aimerez peut-être aussi