CORBAプログラミング・リファレンス

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

実装構成ファイル(ICF)

Oracle Tuxedo CORBA TPフレームワークのアプリケーション・プログラミング・インタフェース(API)には、オブジェクトをアクティブ化および非アクティブ化するためのコールバック・メソッドが用意されています。これらのメソッドを使用すると、アプリケーション・コードにCORBAオブジェクトの柔軟な状態管理スキームを実装できます。

状態管理とは、オブジェクトのアクティブ化および非アクティブ化時にオブジェクトの状態の保存および復元を制御する方法のことです。状態管理は、サーバーのパフォーマンスおよびリソース使用量に影響を与える、アクティブ化されたオブジェクトの有効期間にも影響します。TPフレームワークの外部APIには、activate_object()およびdeactivate_object()メソッドが含まれています。これらのメソッドは、状態管理コードを配置可能な場所を示します。また、TPフレームワークAPIには、ユーザーがオブジェクトをアクティブ化するタイミングを制御できるようにするためのdeactivateEnable()メソッドが含まれています。アクティブ化されたオブジェクトのデフォルトの有効期間は、OMG IDLのコンパイル時に実装に割り当てたポリシーによって制御されます。

CORBAオブジェクトがアクティブ化されている間、オブジェクトの状態はサーバント内に格納されます。この状態は、オブジェクトが最初に呼び出されたとき、つまりオブジェクト参照の作成後にCORBAオブジェクトに対してメソッドが最初に呼び出されたときと、オブジェクトが非アクティブ化されて以降の呼出しで初期化しなければなりません。

CORBAオブジェクトが非アクティブ化されている間、オブジェクトの状態をサーバントがアクティブ化されていたプロセスの外部に保存する必要があります。オブジェクトがアクティブ化されたときには、オブジェクトの状態を復元する必要があります。オブジェクトの状態は、共有メモリー、ファイル、データベースなどに保存できます。プログラマは、オブジェクトの状態の構成要素と、オブジェクトを非アクティブ化する前に何を保存し、オブジェクトをアクティブ化した後に何を復元するかを決定する必要があります。

実装構成ファイル(ICF)を使用すると、アクティブ化ポリシーを設定して、各実装でアクティブ化されたオブジェクトの有効期間を設定できます。ICFファイルでは、アクティブ化ポリシーを指定することで、オブジェクトの状態を管理します。アクティブ化ポリシーは、CORBAオブジェクトがメモリー内でアクティブ化している期間を決定します。CORBAオブジェクトがポータブル・オブジェクト・アダプタ(POA)内でアクティブ化されているのは、POAのアクティブ・オブジェクト・マップにオブジェクトIDと既存のサーバントを関連付けるエントリが入っている場合です。オブジェクトを非アクティブ化すると、オブジェクトIDとアクティブ化されたサーバントとの関連付けが削除されます。

 


ICFの構文

ICFの構文は次のとおりです。

[#pragma activation_policy method|transaction|process]
[#pragma transaction_policy never|ignore|optional|always]
[#pragma concurrency_policy user_controlled|system_controlled]
[#pragma retry_policy never|always]
[Module module-name {]
implementation [implementation-name]
{
implements (module-name::interface-name);
[activation_policy (method|transaction|process);]
[transaction_policy (never|ignore|optional|always);]
[concurrency_policy (user_controlled|system_controlled);]
[retry_policy (never|always)];
};[};]

pragmas

任意の4つのプラグマを使用すると、明示的なactivation_policytransaction_policyconcurrency_policy、またはretry_policy文を持たないすべての実装用のICF全体のデフォルト・ポリシーとして、特定のポリシーを設定できます。この機能により、プログラマは、実装ごとにポリシーを指定する必要がなくなります。また、デフォルトを上書きすることもできます。

Module module-name

module-name変数は、OMG IDLファイルでオプションの場合はオプションです。この変数は、スコープとグループを指定する場合に使用します。この変数を使用する場合は、OMG IDLファイル内の使い方と一貫性を持たせる必要があります。

implementation-name

この変数はオプションで、サーバー名またはサーバー内のクラス名として使用します。プログラマが指定していない場合は、interface-name_iを追加して名前が作成されます。

implements (module-name::interface-name)

この変数は、アクティブ化ポリシーおよびトランザクション・ポリシーの適用対象となるモジュールおよびインタフェースを識別します。

activation_policy

アクティブ化ポリシーの詳細は、「アクティブ化ポリシー」を参照してください。

transaction_policy

トランザクション・ポリシーの詳細は、「トランザクション・ポリシー」を参照してください。

concurrency_policy

同時実行性ポリシーの詳細は、「パラレル・オブジェクト」を参照してください。

retry_policy

再試行ポリシーの詳細は、「IIOPクライアント・フェイルオーバー」を参照してください。

 


ICFファイルのサンプル

リスト2-1は、ICFファイルの例を示しています。

リスト2-1 ICFの例
module POA_University1
{
implementation CourseSynopsisEnumerator_i
{
activation_policy ( process );
transaction_policy ( optional );
implements ( University1::CourseSynopsisEnumerator );
};

};
module POA_University1
{
implementation Registrar_i
{
activation_policy ( method );
transaction_policy ( optional );
implements ( University1::Registrar );
};

};
module POA_University1
{
implementation RegistrarFactory_i
{
activation_policy ( process );
transaction_policy ( optional );
implements ( University1::RegistrarFactory );
};

};

 


ICFファイルの作成

ICFファイルの作成には、手動でコーディングする方法と、genicfコマンドを使用してOMG IDLファイルから作成する方法があります。genicfコマンドの構文およびオプションについては、『Oracle Tuxedoコマンド・リファレンス』を参照してください。

関連項目

『CORBAサーバー・アプリケーションの作成』Oracle Tuxedo CORBA サーバー・アプリケーションの作成手順に関する項


  先頭に戻る       前  次