ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)
Interstage

5.17.3 代理方式のServant実装

代理方式によるユーザクラス(インタフェース実装クラス)は、以下のような継承関係で実装します。サーバアプリケーションのメイン部では、tieクラス(<インタフェース名>POATie)のインスタンスをPOAに登録します。継承方式を使用した場合のような規定の継承関係から解放されるため、実装の自由度が高くなります。ただし、tieクラスのメンバとして登録するために、インタフェース実装クラスは、<インタフェース名>Operationインタフェースをimplementsする必要があります。
代理方式のアプリケーション例は、“5.19 サーバアプリケーションのプログラミング例”を参照してください。



上図のとおり、代理方式ではユーザクラスは、以下のように<interface名>Operationインタフェースを実装するように記述します。


IDL定義】

module ODsample{
    interface   intf{
        long    add(in long a, in long b);
    };
};

【ユーザクラスの例】

class UserClass extends OtherUserClass
implements ODsample.intfOperations
{
    public int add( int a, int b ){
        return( a + b );
    }
}

メイン処理部では、いったんこのユーザクラスのインスタンスをtieクラスのインスタンスに登録します。tieクラスのコンストラクタの引数としてユーザクラスインスタンスを渡します。
さらに、tieクラスのインスタンスをPOAにServantとして登録します。
以下の例では、Default Servantとして登録しています。


【メイン部の例】

// ユーザクラスのインスタンス生成
UserClass uc = new UserClass();
// tieオブジェクト作成とユーザクラスの登録
intfPOATie  tie = new intfPOATie( uc ); 
// POAのDefault Servantに設定
aPOA.set_servant( tie );

aPOA:POAクラスのインスタンス