Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

CORBA Discussion :

Préparation Examen CORBA


Sujet :

CORBA

  1. #1
    Membre à l'essai
    Préparation Examen CORBA
    Bonjour à tous,

    Nous avons eu un questionnaire pour nous préparer à notre examen de CORBA, et nous sollicitons votre aide : Voici les questions sur lesquels nous bloquons, nous proposons des réponses, tout commentaire constructif est le bienvenue :

    Un objet CORBA peut-il avoir 2 IOR distinctes? Si oui ou non Pourquoi?

    Pour quelle(s) raison(s) l’utilisation du type Any n’est-il pas possible en invocation dynamique?

    Que se passe-t-il si un POA fils possède les politiques NON_RETAIN et USE_ACTIVE_OBJECT_MAP_ONLY?
    Réponse proposée :
    C'est contradictoire d'utiliser USE_ACTIVE_OBJECT_MAP_ONLY, quand en effet le NON_RETAIN veut dire que l'association n'est pas mémorisée dans l'Active Object Map (AOM).

    Les informations suivantes RepositoryID, IP+n°port, POA suffisent-elles à localiser un objet CORBA ? Pourquoi?
    Réponse proposée :
    Il manque l’object ID, un ior et composé de 3 choses :
    - interface OMG IDL = repository ID
    - l’adresse de transport = ip + port
    - et l’object key : ID de l’objet et nom du POA

  2. #2
    Membre averti
    Bonjour,

    Un objet CORBA peut-il avoir 2 IOR distinctes? Si oui ou non Pourquoi?
    Oui, car une IOR peut être multi-profils. Et chacun de ces profiles peut être utilisé de manière indépendante, et donc être converti en un IOR unique.
    Exemple d'utilisation: un ORB tourne sur une machine qui a plusieurs adresses IP, on peut imaginer 3 IORs distincts pour le même objet CORBA:
    • une IOR avec 2 profils (1 pour chaque adresse IP)
    • une IOR avec 1 profil pour la 1ère adresse IP
    • une IOR avec 1 profil pour la 2ème adresse IP




    Pour quelle(s) raison(s) l’utilisation du type Any n’est-il pas possible en invocation dynamique?
    Est-ce une question piège ?? Je ne vois pas pourquoi l'utilisation du type Any ne serai pas possible en DII.
    Imaginons l'interface suivante en IDL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    interface Test {
       void print_if_you_can(in any a);
    };
    Je pense que la requête DII suivante marche (en Java):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    org.omg.CORBA.ORB orb = // ... init ORB
    org.omg.CORBA.Object test = // ... obtenir un objet CORBA Test
    org.omg.CORBA.Request r = o._request("print_if_you_can");
    org.omg.CORBA.Any arg = orb.create_any();
    arg.insert_string("Hello World!");
    r.add_in_arg().insert_any(arg);
    r.set_return_type(orb.get_primitive_tc(org.omg.CORBA.TCKind.tk_void));
    r.invoke();


    Que se passe-t-il si un POA fils possède les politiques NON_RETAIN et USE_ACTIVE_OBJECT_MAP_ONLY?
    Réponse proposée :
    C'est contradictoire d'utiliser USE_ACTIVE_OBJECT_MAP_ONLY, quand en effet le NON_RETAIN veut dire que l'association n'est pas mémorisée dans l'Active Object Map (AOM).
    Exact. La création d'un POA avec ces 2 politiques échoue avec une exception InvalidPolicy.



    Les informations suivantes RepositoryID, IP+n°port, POA suffisent-elles à localiser un objet CORBA ? Pourquoi?
    Réponse proposée :
    Il manque l’object ID
    Exact. Mais juste une remarque: l'object key ne contient pas forcément l'identifiant du POA (même si c'est souvent le cas). L'ORB peut avoir d'autre moyens de trouver le POA (voir la note dans CORBA 2.6 §11.6.7)