IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Migration de BOA a POA avec l'ORB de Sun


Sujet :

CORBA

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Migration de BOA a POA avec l'ORB de Sun
    Bonjour,

    J'ai un large code qui utilise le CORBA de Sun base sur le BOA ( compile des IDL avec l'option "-oldImplBase"). L'application en question utilise CORBA pour creer les objets par delegation comme suit:
    Pour une intefrace XXX j'ai
    XXXImpl impl = new XXXImpl();
    XXX x = new XXX_Tie(impl);
    orb.connect(x);
    x.doSomething(); // l'appel ici est local, i.e sans passer par les couche corba

    Je souhaite porter ce code en utilisant le POA, toujours par delegation. J'ai commencer par remplacer tout les appels _Tie par POATie. Bien sur ceci a casse le code car il n'y a plus de lien entre le XXXTie et XXX. Du coup pour recuperer le XXX, j'ai fait rootPOA.servant_to_reference(xxxpoatie) puis un narrow() de ce que me renvoie le servant_to_reference(). Sauf que a present tout les appel de XXX sont automatiquement en remote et cette ligne ne compile pas:
    XXX x = new XXXPOATie(impl);

    En regardant bien c'est normal le XXX ne peut etre qu'un _Stub et donc la partie client du code (remote). Oui mais comment faire pour pas casser tout le code, car dans la plupart des cas les objets sont locaux, car dans le code d'origine il ne fait que orb.connect() et pas obj_is_ready().

    En resume et si j'ai bien compris, dans mon cas ou les appels se font en local il faut que je fasse les appels aux fonctions uniquement a travers le XXXImpl ou de son Tie seulement (et pas le XXX) ? Mais ca ca veut dire bcp de boulo... y a t il un autre moyen ?

    A part le code, est ce qu'il faut changer qqchose a la config du fait de changement de BOA a POA?

    J'ai vraiment besoin d'aide!

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 219
    Points : 302
    Points
    302
    Par défaut
    Je souhaite porter ce code en utilisant le POA, toujours par delegation. J'ai commencer par remplacer tout les appels _Tie par POATie. Bien sur ceci a casse le code car il n'y a plus de lien entre le XXXTie et XXX.
    Pourquoi n'y aurait-il plus de lien ?
    Il y en a un dès l'activation de l'object CORBA. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XXX x = xxxpoatie._this(orb);
    Sauf que a present tout les appel de XXX sont automatiquement en remote
    Qu'est ce qui te fait dire qu'ils sont en remote ? Si le client est dans le même process que le serveur, ce n'est pas en remote.
    Après, il est possible que ton ORB fasse du boulot en trop et inutile lors d'un appel co-localisé. Mais certains ORB peuvent optimiser cela avec une configuration adéquate.

    cette ligne ne compile pas:
    XXX x = new XXXPOATie(impl);
    Normal. Comme tu le dis XXXPOATie n'est pas un stub, c'est un skeleton (côté serveur). Pour obtenir un stub, il faut activer un objet CORBA "connecté" sur ce skel. Cela peut être fait de manière implicite avec le code ci-dessus (_this()) ou de manière explicite avec un POA et l'opération activate_object() puis id_to_reference().

    En resume et si j'ai bien compris, dans mon cas ou les appels se font en local il faut que je fasse les appels aux fonctions uniquement a travers le XXXImpl ou de son Tie seulement (et pas le XXX) ? Mais ca ca veut dire bcp de boulo... y a t il un autre moyen ?
    Pour des appels co-localisés, tu peux aussi passer par le XXX, de la même manière qu'en distant. C'est un des intérêts de CORBA: lorsqu'un client utilise un stub (XXX) il n'a pas à savoir si le skel est local où remote. L'appel se fait de la même manière. C'est l'ORB qui gère.

Discussions similaires

  1. [Junit] Migration vers JUnit 4.5 avec Galileo
    Par zaboug dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 17/12/2010, 11h22
  2. Migration 2000 vers 2008 : Problème avec les Users
    Par BenoitM dans le forum Réplications
    Réponses: 1
    Dernier message: 07/12/2009, 14h13
  3. Migration Database 9i vers 10g AVEC Worfklow
    Par deus666 dans le forum Import/Export
    Réponses: 3
    Dernier message: 06/11/2008, 14h33
  4. [Boa] Bug unicode avec Boa
    Par barrique dans le forum EDI/RAD
    Réponses: 12
    Dernier message: 09/08/2007, 09h09
  5. comment recupérer l'id du POA avec jacorb?
    Par nonaM1982 dans le forum CORBA
    Réponses: 1
    Dernier message: 15/09/2006, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo