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 {...}