2010-12-01 4 views
0

Ich habe eine definierte IDL-Datei, die wie folgt aussieht:CORBA IDL + + Java: Hilfe benötigen mit dem Schreiben Diener

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); 
    }; 
}; 

, die ich mit idlj kompilieren. Ich habe einen BankServant definiert, der vom Client benutzt wird, um mit dem Server zu kommunizieren, und ich habe ein Arbeitsprogramm mit fast allen implementierten Methoden. Mein einziges Problem ist, dass ich nicht weiß, wie ich account(in AccountId accNr) Methode implementieren kann, die wiederum das korrekte Kontoobjekt zurückgibt. Da ich CORBA nicht kenne und ich nur einem Freund helfe, möchte ich nach einer Art von Lösungen/Beispielen/Tutorials fragen, die mir helfen können, ein einfaches, aber funktionierendes Klassenlayout für den Umgang mit solchen Situationen zu hacken.

Vielen Dank im Voraus.

Antwort

1

Es hängt wirklich von den Richtlinien ab, die Sie für den POA (den Portable Object Adapter) verwenden. Vorausgesetzt, dass Sie die RootPOA in dem Server verwenden, müssen Sie:

  1. Legen Sie eine Implementierung Objekt für das Konto-Objekt. Dies wird normalerweise AccountImpl oder AccountServant genannt, wie ich im Namen des Bankangestellten sehe.

    AccountServant as = new AccountServant(accNr);

  2. Sie haben das Objekt in der POA zu registrieren. Dies hat wiederum mit den Richtlinien zu tun, die Sie für Ihre POA ausgewählt haben. mit der Root- POA:

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

  3. Narrow es auf die richtige Account Art der IDL-Compiler AccountHelper generiert:

    Account acc = AccountHelper.narrow(o);

  4. Return es

    return acc;

In diesem Code wird davon ausgegangen, dass Sie einen Konstruktor für das Java-Objekt AccountServant geschrieben haben, das die Kontonummer als erstes Argument akzeptiert. Sie müssen BankServant auch mit einem Verweis auf den POA angeben, in dem Sie die neu angelegten Objekte Account registrieren möchten.

Es gibt viele Tutorials. Siehe zum Beispiel this one, da die Menge der Optionen für den POA so viele sind, dass ein Buch benötigt wird, um sie alle zu erklären :).

+0

Vielen Dank - ich wollte nicht alles über die CORBA lernen, da dies eine 15-minütige Hilfestellung sein sollte, aber ich hatte einige Probleme, auch nachdem ich einige Tutorials gelesen hatte. – zeroDivisible

Verwandte Themen