TP4 : Common Object Request Broker Architecture (intro CORBA)


Téléchargez cette archive contenant des exemples à tester et à compléter.

Pour tous les exercices, pensez bien à tuer tous vos programmes serveurs à chaque fois que vous vous déloguez d'une machine Linux.


Exercice 0





Exercice 1





Exercice 2


Dans cet exercice, on va utiliser le POA (Portable Object Adaptor).
Par rapport à l'exercice 1, un intermediaire appelé POA se place entre le squelette de l'objet distant et l'ORB au niveau du serveur.
Ce POA normalisé permet de faire interopérer le serveur avec differents ORBs (pas uniquement celui de java SUN).



Exercice 3


Placez-vous dans le répertoire Matrice.
  • Ce répertoire contient un fichier OpMatrice.idl.
    Cette interface IDL définit un service qui propose la multiplication de 2 matrices.
    Projeter cette interface avec l'outil idlj.

  • Proposer une implémentation CORBA de ce service, équivalente à ce qui a été fait précédemment avec RMI dans le TD2 et le TP3.
    Cette fois-ci on pourra multiplier des matrices rectangulaires quelconques : a de dimension n*k et b de dimension k*m.

  • Le Client demandera au service distant de multiplier les deux matrices a et b telles que :
       int[][] a = { {1, 0, 0}, {0, 2, 0}, {0, 0, 3}, {0, 0, 4} };
       int[][] b = { {1, 2, 3}, {1, 2, 3}, {1, 2, 3} };
    et retourner un résultat égal à :
       res = a*b = { {1, 2, 3}, {2, 4, 6}, {3, 6, 9}, {4, 8, 12} };


  • REMARQUE : pour éviter de faire un copier/coller de l'IOR à partir du shell, on peut écrire l'IOR dans un fichier qui sera lu par le client.
    Dans le fichier IDL est définie une constante iorfile contenant le nom du fichier où l'IOR sera stocké.

    Dans le serveur, pour écrire l'IOR dans un fichier, vous pouvez par exemple utiliser le code suivant :
       FileOutputStream file = new FileOutputStream(iorfile.value);
       PrintWriter out = new PrintWriter(file);
       out.println(ior); out.flush();
       file.close();

    Dans le client, on peut utiliser le code suivant pour lire l'IOR depuis un fichier :
       FileReader file = new FileReader(iorfile.value);
       BufferedReader in = new BufferedReader(file);
       ior = in.readLine();
       file.close();

    Modifier le code pour permettre le passage de l'IOR par fichier.



Exercice 4


Placez-vous dans le répertoire Annuaire.
  • Le fichier Annuaire.idl définit l'interface IDL d'un service d'annuaire comme celui vu dans le TP3.
    Générer l'ensemble des fichiers associés à cette interface.

  • Proposer une implémentation CORBA de ce service en utilisant le POA.
    Reprendre pour cela l'exercice RMI de l'annuaire dans le TP3.









[Page réalisée à à l'aide d'un document de Guillaume Latu]