Hitachi

VisiBroker Version 5 Borland(R) Enterprise Server VisiBroker(R) プログラマーズリファレンス


2.9.4 継承によるサーバインプリメンテーション

サーバをインプリメントするいちばん簡単な方法は,継承を使用することです。それは,サーバオブジェクトとオブジェクトリファレンスが同じように見えて,同じように動作し,まったく同じコンテキストで使用できるからです。サーバオブジェクトがクライアントと同じプロセス内にある場合,メソッド呼び出しは,トランスポート,インディレクション(間接),または各種デリゲーションのない通常のJava関数呼び出しになります。

各IDLインタフェースがマッピングされるのは,対応するJava版IDLインタフェースをインプリメントするPOAのabstractクラスです。

POAクラスが(実際に)IDLインタフェースを継承しないということは,POAはCORBAオブジェクトではないということです。POAは,CORBAサーバントであり,(実際の)CORBAオブジェクトを作成するときに使用できます。POAクラスの詳細については,「4. コアインタフェースとクラス(Java)」を参照してください。

ユーザ定義サーバクラスはコードサンプル2-24に示すとおり,<インタフェース名>POAクラスを継承することでVisiBroker ORBにリンクされます。

POAクラス自体はabstract型であり,実体化できません。POAクラスを実体化するには,宣言したIDLインタフェースオペレーションをインプリメントしてください。

コードサンプル2-24 継承を使用するJavaでのサーバインプリメンテーション
/*From Bank.idl:*/
module Bank {
    interface Account {
    };
};
 
// Generated java
package Bank;
public abstract class AccountPOA extends
    org.omg.PortableServer.Servant implements
    org.omg.CORBA.portable.InvokeHandler,
    Bank.AccountOperations {...}
// Linking an implementation to the ORB :
public class AccountImpl extends Bank.AccountPOA {...}