3.7.1.2.7.4 説明

TPフレームワークは、リクエストがサーバーに到着したときに、そのリクエストを満たすために使用できるサーバントがない場合にcreate_servant_with_idメソッドを呼び出します。TPフレームワークは、作成するサーバントのインタフェースとサーバントに関連付けられるオブジェクトのオブジェクトIDを渡します。サーバー・アプリケーションでは、適切なC++オブジェクトをインスタンス化して、そのオブジェクトを指すポインタを返します。通常、このメソッドは、インタフェース名のswitch文を格納しており、インタフェース名に従って新しいオブジェクトを作成します。オブジェクトIDを指定すると、サーバントの実装では、サーバント・インスタンスの作成時にターゲット・オブジェクトの情報を基に様々な決定を行えます。リエントラントのサポートは、サーバントの実装でターゲット・オブジェクトの情報を利用する方法の一例です。

ServerBaseクラスには、インタフェース名を渡す標準のcreate_servantメソッドを呼び出すcreate_servant_with_idのデフォルト実装が用意されています。このデフォルト実装では、ターゲット・オブジェクトIDパラメータは無視されます。

注意:

サーバー・アプリケーションでは、CORBAオブジェクトがアクティブ化されるたびにこのメソッドが呼び出されることを前提にしてはなりません。また、サーバー・アプリケーションでは、CORBAオブジェクトのサーバント・クラスのコンストラクタまたはデストラクタで、CORBAオブジェクトの状態を処理してはなりません。TPフレームワークがアクティブ化時にサーバントを再利用する場合や、非アクティブ化時にサーバントを破棄しない場合が考えられるからです。