2010-12-01 28 views
0

j'ai un fichier IDL défini, qui ressemble à ceci:CORBA IDL + + Java: Besoin d'aide avec serviteur d'écriture

module Banking { 
    typedef string Transactions[5]; 
    typedef long AccountId; 

    interface Account { 
     exception InsufficientFunds {}; 

     readonly attribute double balance; 
     long lodge(in double amount); 
     long withdraw(in double amount) raises (InsufficientFunds); 
     readonly attribute Transactions transactions; 
    }; 

    interface Bank { 
     long accountCount(); 
     double totalMoney(); 
     Account account(in AccountId accNr); 
    }; 
}; 

que je compilez avec idlj. J'ai défini un BankServant, utilisé par le client pour communiquer avec le serveur et j'ai un programme de travail avec presque toutes les méthodes implémentées. Mon seul problème est que je ne sais pas comment puis-je implémenter la méthode account(in AccountId accNr), qui retournera à son tour l'objet compte approprié. Comme je ne connais pas CORBA et que j'aide juste un ami, je voudrais demander des solutions/exemples/tutoriels qui pourraient m'aider à pirater une mise en page simple mais efficace pour faire face à ce genre de situations.

Merci d'avance.

Répondre

1

Cela dépend vraiment des stratégies que vous utilisez pour le POA (l'adaptateur d'objet portable). En supposant que vous utilisez le RootPOA dans le serveur, vous devez:

  1. Créer un objet de mise en œuvre de l'objet de compte. Ceci est généralement appelé AccountImpl ou AccountServant comme je le vois dans le nom de l'employé de banque.

    AccountServant as = new AccountServant(accNr);

  2. Vous devez vous enregistrer l'objet dans le POA. Ceci, encore une fois, a à voir avec les politiques que vous avez sélectionnées pour votre POA. en utilisant la valeur par défaut Racine POA:

    org.omg.CORBA.Object o = rootPOA.servant_to_reference(as);

  3. étroite au type Account correcte à l'aide du compilateur IDL généré AccountHelper:

    Account acc = AccountHelper.narrow(o);

  4. Retour il

    return acc;

Ce code suppose que vous avez écrit un constructeur pour l'objet Java AccountServant qui accepte le numéro de compte comme premier argument. Vous devez également fournir le BankServant avec une référence au POA dans lequel vous souhaitez enregistrer les objets Account nouvellement créés.

Il existe de nombreux tutoriels. Voir this one par exemple, car l'ensemble d'options pour le POA est si nombreux qu'il faut un livre pour les expliquer tous :).

+0

Merci beaucoup - Je ne voulais pas tout savoir sur le CORBA car cela devrait être une tâche d'aide de 15 minutes, mais j'ai eu quelques problèmes, même après avoir lu quelques tutoriels. – zeroDivisible