Exercice
Soit le fichier [Link] suivant:
module CorbaEmploye{
struct Employe{
long id;
string nom,prenom,poste;
float salaire;
};
typedef sequence <Employe>LE;
interface GererEmploye{
string AjouterEmploye(in Employe e);
Employe getEmploye(in long id);
float getSaliare(in string poste);
LE getEmployes();
};};
1. Ecrire l’interface qu’on peut générer de ce fichier.
public interface GererEmployeOperations
{
String AjouterEmploye ([Link] e);
[Link] getEmploye (int id);
float getSaliare (String poste);
[Link][] getEmployes ();
} // interface GererEmployeOperations
2. Développer la lasse implémentant cette interface.
public class EmployeImpl extends GererEmployePOA {
List <Employe> L= new ArrayList<Employe>();
@Override
public String AjouterEmploye(Employe e) {
[Link](e);
return "vous avez ajouté "+[Link]()+" Employées";
}
@Override
public Employe getEmploye(int id) {
for(int i=0; i<[Link](); i++)
if([Link](i).id==id)
return [Link](i);
return new Employe();
}
@Override
public float getSaliare(String poste) {
for(int i=0; i<[Link](); i++)
if([Link](i).[Link](poste))
return [Link](i).salaire;
return 0;
}
@Override
public Employe[] getEmployes() {
Employe []T=[Link](new Employe[[Link]()]);
return T;
}
[Link] la classe Serveur et la classe cliente.
public class Serveur {
public static void main(String[] args) {
try {
// Initialiser l'ORB
ORB orb=[Link]( args,null) ;
// Créer le POA Manager
POA rootPOA=
[Link](orb.resolve_initial_references("RootPOA"));
// Activer le POA Manager
rootPOA.the_POAManager().activate();
// Créer l'objet qui offre le service distant
EmployeImpl od=new EmployeImpl ();
// Créer un contexte de noms
NamingContext root=[Link]
(orb.resolve_initial_references("NameService"));
//Créer un tableau de noms qui seront attribués à l'objet
NameComponent[] nsNom=new NameComponent[1];
// Définir un nom publique de l'objet distant
nsNom[0]=new NameComponent("MonEmploye","");
//Enre istrer la référence de l'ob et distant dans le Namin
//Service
[Link](nsNom,rootPOA.servant_to_reference(od));
// Démarrer le serveur
[Link]();
} catch (Exception e) {
[Link]();
}
}
}
public class Client {
public static void main(String[] args) {
try{
// Initialiser l'ORB
ORB orb=[Link](args,null);
// Créer le contexte de Naming Service
NamingContext
root=[Link](orb.resolve_initial_references("NameService"));
// Créer un tableau de noms
NameComponent[] nsNom=new NameComponent[1];
// Initialiser le nom de l'objet Distant
nsNom[0]=new NameComponent("MonEmploye","");
// Récupérer la référence de l'objet distant à partier du Naming Service
[Link] remoteRef=[Link](nsNom);
// Créer le représentant local de l'objet distant
GererEmploye b=[Link](remoteRef);
// Invocation des méthodes distantes.
[Link]([Link](new Employe(1,"ben
mahmoud","asma","développeur",(float) 2000.0)));
[Link]([Link](new Employe(2,"ben
salah","ali","prof",(float) 2100.0)));
Employe e= [Link](1);
[Link]( [Link]+[Link]);
[Link]( [Link]("développeur"));
Employe []l=[Link]();
for(int i=0; i<[Link];i++)
{
[Link]( l[i].nom+l[i].prenom);
}
}catch (Exception e) { [Link]();}}