Service INS (Interoperable Naming Service)

Le service CORBA CosNaming est conforme à la spécification OMG (Object Management Group) Interoperable Naming Service (spécification INS, CORBA 2.3). CosNaming est l'acronyme de Common Object Services Naming.

Le service de nom associe des noms à des références d'objet CORBA. Les références d'objet sont stockées dans l'espace de nom en fonction du nom et chaque paire référence d'objet-nom s'appelle une liaison. Les liaisons de nom peuvent être organisées dans des contextes d'affectation de nom. Les contextes d'affectation de nom sont eux-mêmes des liaisons de nom et ils ont la même fonction organisationnelle qu'un sous-répertoire de système de fichiers. Toutes les liaisons sont stockées dans le contexte d'affectation de nom initial. Ce contexte est la seule liaison persistante dans l'espace de nom.

Cette implémentation inclut de nouveaux formats de chaîne qui peuvent être envoyés sous la forme d'un paramètre aux méthodes ORB string_to_object() et resolve_initial_references(). Les formats sont corbaname et corbaloc.

Les identificateurs URI Corbaloc permettent de spécifier des références d'objet qui peuvent être contactées par IIOP ou trouvées via ORB::resolve_initial_references(). Ce nouveau format est plus simple à manipuler que IOR. Pour spécifier une référence d'objet IIOP, utilisez un identificateur URI de format :
corbaloc:iiop:<host>:<port>/<object key>
Remarque: Voir la spécification CORBA 2.4.2 pour la syntaxe complète de ce format.
Par exemple, l'URI corbaloc suivant spécifie un objet dont la clé est MyObjectKey, qui se trouve dans un processus fonctionnant sur myHost.myOrg.com et écoutant sur le port 2809 :
corbaloc:iiop:myHost.myOrg.com:2809/MyObjectKey
Les identificateurs URI Corbaname amènent la méthode string_to_object() à rechercher un nom dans le service d'affectation de nom CORBA. Ils constituent une extension de la syntaxe corbaloc :
corbaname:<corbaloc location>/<object key>#<stringified name>
Remarque: Voir la spécification CORBA 2.4.2 pour la syntaxe complète de ce format.
Voici un exemple d'URI corbaname :
corbaname::myOrg.com:2050#Personal/schedule

Dans cet exemple, la partie de la référence jusqu'au signe dièse (#) est l'URL qui retourne le contexte de nommage racine. La deuxième partie de l'exemple, après le signe dièse (#), est l'argument utilisé pour résoudre l'objet sur le NamingContext.

Le service INS a spécifié deux arguments de ligne de commande standard qui fournissent une méthode portable pour configurer ORB::resolve_initial_references() :
  • -ORBInitRef prend un argument de la forme <ObjectId>=<ObjectURI>. Par exemple, vous pouvez utiliser les arguments de ligne de commande suivants :
    -ORBInitRef NameService=corbaname::myhost.example.com

    Dans cet exemple, resolve_initial_references("NameService") retourne une référence à l'objet avec la clé NameService disponible dans myhost.example.com, port 2809.

  • -ORBDefaultInitRef fournit une chaîne de préfixe utilisée pour résoudre des noms autrement inconnus. Lorsque la méthode resolve_initial_references() ne peut pas résoudre un nom défini spécifiquement (avec -ORBInitRef, elle construit une chaîne constituée du préfixe par défaut, d'une barre oblique (/) et du nom demandé. La chaîne est ensuite envoyée à string_to_object(). Par exemple, avec une ligne de commande :
    -ORBDefaultInitRef corbaloc::myhost.example.com
    un appel à resolve_initial_references("MyService") retourne la référence d'objet indiquée par corbaloc::myhost.example.com/MyService.