2010-12-01 17 views
0

idljでコンパイルした定義済みのidlファイルがあります。CORBA + IDL + Java:サーバントの作成に助けが必要

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

私はBankServantを定義しました。クライアントとサーバーとの通信に使用されています。ほとんどすべてのメソッドが実装された作業プログラムがあります。私の唯一の問題は、account(in AccountId accNr)メソッドを実装する方法がわからないことです。account(in AccountId accNr)メソッドは適切なAccountオブジェクトを返します。私はCORBAを知らず、友人を助けるだけなので、このような状況に対処するためのシンプルで実用的なクラスレイアウトをハックするのに役立ついくつかのソリューション/例/チュートリアルをお願いしたいと思います。

ありがとうございます。

答えて

1

実際は、POA(ポータブルオブジェクトアダプタ)に使用しているポリシーによって異なります。

  1. アカウントオブジェクトの実装オブジェクトを作成する必要があります。銀行員の名前で見ると、これは通常AccountImplまたはAccountServantと呼ばれます。

    AccountServant as = new AccountServant(accNr);

  2. あなたがPOA内のオブジェクトを登録する必要があります。これは、POA用に選択したポリシーと関係があります。 AccountHelperを生成したIDLコンパイラを使用して正しいAccountタイプにも狭い

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

  3. :デフォルトのルートPOAを使用して

    Account acc = AccountHelper.narrow(o);

  4. 戻り、それ

    return acc;

このコードでは、最初の引数としてアカウント番号を受け入れるAccountServant Javaオブジェクトのコンストラクタを記述していることを前提としています。 BankServantには、新たに作成されたAccountオブジェクトを登録するPOAへの参照を提供する必要があります。

チュートリアルがたくさんあります。たとえば、this oneを参照してください。POAのオプションセットは非常に多く、書籍のすべてを説明する必要があります。

+0

ありがとうございました - 私はCORBAについてすべてを学びたいとは思っていませんでしたが、これは15分のヘルプタスクでなければなりませんでしたが、いくつかのチュートリアルを読んだ後でも問題はほとんどありませんでした。 – zeroDivisible

関連する問題