11.1.3.1 C++におけるスケルトンからの継承例

以下は、次のIDLを想定したC++の例です:

interface Hospital{ … };

idlコマンドによって生成されたスケルトンには、次のように、ユーザー記述クラスの継承元である「スケルトン」クラスPOA_Hospitalが包含されます:

class Hospital_i : public POA_Hospital { ... };

サーバーでは、スケルトン・クラスはTPフレームワーク・クラスTobj_ServantBaseから継承します。これがさらに、定義済のPortableServer::ServantBaseから継承しています。

共同クライアント/サーバーのコールバック・オブジェクトの実装における継承ツリーは、サーバーにおけるものとは異なります。スケルトン・クラスはTPフレームワーク・クラスTobj_ServantBaseからは継承しませんが、直接PortableServer::ServantBaseから継承します。この振る舞いは、idlコマンドで-Pオプションを指定することによって行われます。

サーバーントの継承ツリーにTobj_ServantBaseクラスがないということは、そのサーバーントにactivate_objectメソッドとdeactivate_objectメソッドがないことを意味します。サーバーでは、これらのメソッドはTPフレームワークによって呼び出され、サーバントに対してあるメソッドを呼び出す前に、そのサーバントの状態を動的に初期化して保存します。コールバックをサポートするクライアントの場合は、明示的にサーバントを作成し、サーバントの状態を初期化するコードを記述する必要があります。