next up previous
Next: Exercice 1 Up: Enoncés des travaux pratiques Previous: Introduction

Mise en place de l'environnement

L'ORB que nous allons utiliser, omniORB2, est celui distribué gratuitement par ATT. Cet ORB est conforme au standard CORBA 2.0. Toutefois, certaines fonctionnalités ne sont pas implantées, et en particulier, la DSI, la DII et le type IDL any. L'ORB est fourni avec un compilateur IDL qui produit un mapping C++. Il offre aussi un service de nom conforme à celui standardisé par l'OMG. La configuration de l'environnement consiste, entre autre, à positionner les variables nécessaires à ce dernier. Nous avons vu dans le cours, que tout service CORBA est défini par un ensemble d'interfaces IDL. Le service de nom n'échappe pas à cette règle. Toutefois, il est soumis à la contrainte supplémentaire que tous les clients et serveurs CORBA doivent aisément obtenir une référence sur ses interfaces. CORBA spécifie que l'obtention de cette référence est réalisée par la méthode resolve_initial_reference de l'ORB. Dans omniORB2, la référence du service de nom est stockée dans un fichier. Ce fichier est lu par tous les processus lors de l'initialisation de leur ORB. La configuration de l'environnement consiste alors à donner à l'ORB les informations afin qu'il puisse trouver ce fichier.




Nous faisons maintenant l'hypothèse que vous utilisez zsh et que vous avez rapatrié les sources des exercices, puis, utilisé la commande tar pour les extraire de l'archive dans votre répertoire principal. Votre répertoire principal doit alors contenir le répertoire TP-CORBA. Dans ce dernier, se trouve le fichier corba.zsh. Celui-ci comprend la définition des variables nécessaires au bon fonctionnement du serveur de nom. Pour positionner les variables en question, il suffit alors d'utiliser la commande :


                    
source corba.zsh

dans toutes les fenêtres ou vous exécuterez des processus CORBA. Créez ensuite le fichier ns.ior sous votre répertoire principal (la variable zsh OMNIORB_CONFIG du script corba.zsh doit pointer sur le fichier ns.ior). Celui-ci contiendra la référence d'objet du service de nom. Pour obtenir cette référence, démarrez le service de nom par la commande :


                    
omniNames -start XXX

où XXX est un numéro de port TCP/IP (vous utiliserez comme numéro de port, le port 50000 augmenté de votre numéro de casier). Avec le paramètre -start, omniNames affiche alors l'IOR qui permettra de l'atteindre (un IOR est la représentation d'une référence d'objet). Concrètemment, un IOR est une chaîne de caractères de la forme :


                    
IOR:01ed0c082000000049444c3a436f734e616d696e672f4e616d696
e67436f6e746578743a312e3000010000000000000024000000010100
000a0000003132372e302e302e310050c30c00000034999ca4edbcb19e00000001

Stockez alors dans le fichier ns.ior les informations suivantes :


                    
NAMESERVICE IOR:01ed0c082000000049444c3a436f734e616d696e672f4e616d696
e67436f6e746578743a312e3000010000000000000024000000010100
000a0000003132372e302e302e310050c30c00000034999ca4edbcb19e00000001

En fait, on préfixe la référence du service de nom par la chaîne NAMESERVICE. On peut alors relancer omniNames sans le paramètre -start afin de vérifier que celui-ci lit convenablement le fichier ns.ior. On teste que la configuration fonctionne avec la commande suivante :


                    
nameclt list

Celle-ci ne doit pas provoquer d'erreur. Il est normal de n'avoir pas affichage suite à cette commande, en effet, celle-ci affiche la liste des objets et contextes enregistrés auprès du service de nom, or, aucun service n'a encore était enregistré.


next up previous
Next: Exercice 1 Up: Enoncés des travaux pratiques Previous: Introduction
Frank Singhoff
3/24/1998