2.1 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クライアント・フェイルオーバー」を参照してください。