4.4.2. POA |
POA(Portable Object Adapter)は、いくつかの要素が連携して成り立っています。以下にその様子を示します。
POAは、オブジェクトリファレンスと実装オブジェクト(サーバント)の対応を管理します。POAは、処理に関する7つの方針をもち、その方針にしたがい処理を行います。また、POAはツリー構造にすることができ、最初の基点となるPOAを特にルートPOA(root POA)といいます。
POAManagerは、POAの状態を管理します。POAManagerは複数のPOAを管理することができます。また、特定のPOAのために新たに作成することもできます。
オブジェクトID(ObjectId)は、POAが実装オブジェクト(サーバント)を識別するために使用します。オブジェクトIDをプログラマが指定するかPOAが生成するかはPOAのもつ方針に依存します。オブジェクトIDは、オブジェクトリファレンスの中に含まれます。また、オブジェクトIDと文字列型との変換関数が用意されています。
Active Object Mapは、活性化された実装オブジェクトに関する情報を保存しておく場所です。Active Object Mapを利用するかどうかはPOAのもつ方針に依存します。
サーバントマネージャ(servant manager)は、POAから要求があったときにオブジェクトを活性化します。この機能を実現するには、プログラマがサーバントマネージャを実装する必要があります。サーバントマネージャを利用するかどうかは、POAのもつ方針に依存します。
呼び出し対象のオブジェクトに対応する実装オブジェクトが見つからないとき、任意の実装オブジェクトで代用することができます。このような指定をした実装オブジェクトのことをデフォルトサーバント(default servant)と呼びます。デフォルトサーバントを利用するかどうかは、POAのもつ方針に依存します。
AdapterActivatorは、動的に必要なPOAを生成します。この機能を実現するには、プログラマがAdapterActivatorを実装する必要があります。
4.4.2.1. 変換関数 |
POAが使うPortableServer::ObjectId型はoctetのシーケンスです。PortableServer::POA::ObjectId型と文字列型との間で相互変換できるように、以下の関数が定義されています。
ObjectId_to_string | ObjectIdを文字列に変換する |
ObjectId_to_wstring | ObjectIdをワイド文字列に変換する |
string_to_ObjectId | 文字列をObjectIdに変換する |
wstring_to_ObjectId | ワイド文字列をObjectIdに変換する |
4.4.2.2. CORBA::Policyクラス |
CORBA::Policyクラスはプログラマが作成した処理部分の動作に関する方針を表現するための基底となるクラスです。
copy | CORBA::Policyオブジェクトをコピーする |
destroy | CORBA::Policyオブジェクトを削除する |
4.4.2.3. PortableServer::ThreadPolicyクラス |
プログラマが作成した実装部分のスレッド処理に関する方針を表わすクラスです。
value | プログラマが作成した実装部分のスレッド処理方針を返す |
このほかCORBA::Policyの各メンバが使えます。
4.4.2.4. PortableServer::LifespanPolicyクラス |
オブジェクトリファレンスの有効期間に関する方針を表すクラスです。
value | オブジェクトリファレンスの有効期間に関する方針を返す |
このほかCORBA::Policyの各メンバが使えます。
4.4.2.5. PortableServer::IdUniquenessPolicyクラス |
実装オブジェクトとオブジェクトIDとの対応に関する方針を表すクラスです。
value | 実装オブジェクトとオブジェクトIDとの対応に関する方針を返す |
このほかCORBA::Policyの各メンバが使えます。
4.4.2.6. PortableServer::IdAssignmentPolicyクラス |
オブジェクトIDをプログラマとシステムのどちらが生成するかに関する方針を表すクラスです。
value | オブジェクトIDの生成に関する方針を返す |
このほかCORBA::Policyの各メンバが使えます。
4.4.2.7. PortableServer::ImplicitActivationPolicyクラス |
実装オブジェクトの暗黙的な活性化についての方針を表すクラスです。
value | 実装オブジェクトの暗黙的な活性化についての方針を返す |
このほかCORBA::Policyの各メンバが使えます。
以下のメソッドは、実装オブジェクトの暗黙的な活性化と関係があります。
4.4.2.8. PortableServer::ServantRetentionPolicyクラス |
実装オブジェクトとオブジェクトの対応を保存しておくかどうかに関する方針を表すクラスです。
value | 実装オブジェクトとの対応を保存しておくかどうかに関する方針を返す |
このほかCORBA::Policyの各メンバが使えます。
4.4.2.9. PortableServer::RequestProcessingPolicyクラス |
オブジェクトIDに対応づけられている実装オブジェクトを探す手順に関する方針を表すクラスです。
value | 実装オブジェクトを探す手順に関する方針を返す |
このほかCORBA::Policyの各メンバが使えます。
4.4.2.10. PortableServer::POAManagerクラス |
POAの状態を変更するためのクラスです。POAの状態には以下のものがあります。
holding, active, discardingの3つの状態は互いに行き来することができます。しかし、一旦inactiveになるとほかの状態にすることはできません。メソッドの呼び出しと状態の遷移を下記に示します。
POAManagerはPOAを生成するときに新しく作ることができます。複数のPOAManagerを使って、それぞれのPOAごとに細かく管理することができます。逆に1つのPOAManagerで複数のPOAを一括管理することもできます。新しくPOAを作成するPortableServer::POA::create_POAメソッドの第2引数には、作成されたPOAを管理するPOAManagerを指定します。このときnilオブジェクトを指定すると、新しいPOAManagerが作成され、それにより管理されます。
activate | 状態をactiveに変更する |
hold_requests | 状態をholdingに変更する |
discard_requests | 状態をdiscardingに変更する |
deactivate | 状態をinactiveに変更する |
4.4.2.11. PortableServer::AdapterActivatorクラス |
動的に必要なPOAを生成するクラスです。
POAにAdapterActivatorを設定するときは、PortableServer::POA::the_activator(AdapterActivator)メソッドで行います。現在POAに設定されているAdapterActivatorは、PortableServer::POA::the_activatorメソッドで取得します。
AdapterActivatorはプログラマが実装します。スケルトンクラス(POA_PortableServer::AdapterActivatorクラス)を継承します。
unknown_adapter | POAを生成する |
4.4.2.12. PortableServer::ServantManagerクラス |
POAから要求があったときに、オブジェクトを活性化するための基底クラスです。PortableServer::ServantManager自体はメソッドを持ちません。ServantManagerを設定するPOAのServantRetentionPolicyの値によって、PortableServer::ServantActivator(RETAINのとき)とPortableServer::ServantLocator(NON_RETAINのとき)の2つの派生クラスを使い分けます。
4.4.2.13. PortableServer::ServantActivatorクラス |
POAから要求があったときに、実装オブジェクトの活性化および非活性化を行うクラスです。
ServantRetentionPolicyとしてRETAIN、RequestProcessingPolicyとしてUSE_SERVANT_MANAGERをもつPOAは、要求された実装オブジェクトがActive Object Map内に存在しないとき、ServantActivatorのincarnateメソッドを呼び出して実装オブジェクトを取得し、それをActive Object Mapに保存します。同じオブジェクトに対しての2回目以降の呼び出しは、保存しておいたオブジェクトを使います。このPOAに対して次のメソッドが呼ばれたとき、POAはServantActivatorのetherealizeメソッドを呼びだして実装オブジェクトを非活性化します。
POAにServantActivatorを設定するときは、PortableServer::POA::set_servant_managerメソッドで行います。現在POAに設定されているServantActivatorは、PortableServer::POA::get_servant_managerメソッドで取得します。
ServantActivatorはプログラマが実装します。スケルトンクラス(POA_PortableServer::ServantActivatorクラス)を継承します。
incarnate | 実装オブジェクトを活性化する |
etherealize | 実装オブジェクトを非活性化する |
4.4.2.14. PortableServer::ServantLocatorクラス |
POAから要求があったときに実装オブジェクトの活性化および非活性化を行うクラスです。
ServantRetentionPolicyとしてNON_RETAIN、RequestProcessingPolicyとしてUSE_SERVANT_MANAGERをもつPOAは、リクエスト処理を行うときにServantLocatorのpreinvokeメソッドを呼び出して実装オブジェクトを取得し、リクエスト処理が終了するときServantLocatorのpostinvokeメソッドを呼びだして実装オブジェクトを非活性化します。
POAにServantLocatorを設定するときは、PortableServer::POA::set_servant_managerメソッドで行います。現在POAに設定されているServantLocatorは、PortableServer::POA::get_servant_managerメソッドで取得します。
ServantLocatorはプログラマが実装します。スケルトンクラス(POA_PortableServer::ServantLocator)を継承します。
preinvoke | 実装オブジェクトを活性化する |
postinvoke | 実装オブジェクトを非活性化する |
4.4.2.15. PortableServer::POAクラス |
オブジェクトリファレンスと実装オブジェクトを対応づけるためのクラスです。
POAはツリー構造にすることができます。最初の基点となるPOAを特にルートPOAといいます。あるPOAの子POAを生成するにはcreate_POAメソッドを使います。ルートPOAのオブジェクトリファレンスは、CORBA::ORB::resolve_initial_referencesで取得します。
POAは、以下の7つの方針をもち、指定された方針にしたがって処理を行います。各方針は、それぞれCORBA::Policyクラスの派生クラスとして表現されています。
方針を表すクラス | 方針 |
---|---|
ThreadPolicy | プログラマ実装部のスレッド処理に関する方針 |
LifespanPolicy | オブジェクトの有効期間に関する方針 |
IdUniquenessPolicy | 実装オブジェクトとオブジェクトIDの対応に関する方針 |
IdAssignmentPolicy | オブジェクトIDをプログラマとシステムのどちらが生成するかに関する方針 |
ImplicitActivationPolicy | 実装オブジェクトの暗黙的な活性化に関する方針 |
ServantRetentionPolicy | 活性化した実装オブジェクトをActive Object Mapに保存しておくかどうかに関する方針 |
RequestProcessingPolicy | オブジェクトIDに対応づけられている実装オブジェクトを探す手順に関する方針 |
各方針の組み合わせは「可能な方針の組み合わせ」を参照してください。
ルートPOAの方針は以下の組み合わせです。
ThreadPolicy | ORB_CTRL_MODEL |
LifespanPolicy | TRANSIENT |
IdUniquenessPolicy | UNIQUE_ID |
IdAssignmentPolicy | SYSTEM_ID |
ImplicitActivationPolicy | IMPLICIT_ACTIVATION |
ServantRetentionPolicy | RETAIN |
RequestProcessingPolicy | USE_ACTIVE_OBJECT_MAP_ONLY |
create_POA | 子POAを生成する |
find_POA | 子POAを検索する |
destroy | POAを削除する |
create_thread_policy | ThreadPolicyを生成する |
create_lifespan_policy | LifespanPolicyを生成する |
create_id_uniqueness_policy | IdUniquenessPolicyを生成する |
create_id_assignment_policy | IdAssignmentPolicyを生成する |
create_implicit_activation_policy | ImplicitActivationPolicyを生成する |
create_servant_retention_policy | ServantRetentionPolicyを生成する |
create_request_processing_policy | RequestProcessingPolicyを生成する |
the_name | POA名を取得する |
the_parent | 親POAを取得する |
the_POAManager | POAManagerを取得する |
the_activator(AdapterAcrivator) | AdapterActivatorを設定する |
the_activator | AdapterActivatorを取得する |
get_servant_manager | サーバントマネージャを取得する |
set_servant_manager | サーバントマネージャを設定する |
get_servant | デフォルトサーバントを取得する |
set_servant | デフォルトサーバントを設定する |
activate_object | オブジェクトを活性化する |
activate_object_with_id | オブジェクトIDを指定してオブジェクトを活性化する |
deactivate_object | オブジェクトを非活性化する |
create_reference | オブジェクトリファレンスを生成する |
create_reference_with_id | オブジェクトIDを指定してオブジェクトリファレンスを生成する |
servant_to_id | 実装オブジェクトに対応づけられているオブジェクトIDを取得する |
servant_to_reference | 実装オブジェクトに対応づけられているオブジェクトリファレンスを取得する |
reference_to_servant | オブジェクトリファレンスに対応した実装オブジェクトを取得する |
reference_to_id | オブジェクトリファレンスに含まれているオブジェクトIDを取り出す |
id_to_servant | オブジェクトIDに対応づけられている実装オブジェクトを取得する |
id_to_reference | オブジェクトIDに対応したオブジェクトリファレンスを取得する |
4.4.2.16. PortableServer::Currentクラス |
処理中のリクエストに関する情報を通知するクラスです。イベント処理を行っているPOAおよび処理中のオブジェクトのIDを取得することができます。
get_POA | 現在処理しているPOAを取得する |
get_object_id | 現在処理しているオブジェクトのIDを取得する |
PortableServer::ObjectId_to_string - ObjectIdを文字列に変換する
#include <orb.h> char* PortableServer::ObjectId_to_string( const PortableServer::ObjectId& id, CORBA::Environment& env = Ob_default_environment() );
PortableServer::ObjectId型の値idを文字列に変換します。
変換された文字列が返ります。
オブジェクトIDにヌル文字列などの不正な値が入っていたときはCORBA::BAD_PARAM例外が発生します。
PortableServer::string_to_ObjectId
PortableServer::ObjectId_to_wstring - ObjectIdをワイド文字列に変換する
#include <orb.h> wchar_t* PortableServer::ObjectId_to_wstring( const PortableServer::ObjectId& id, CORBA::Environment& env = Ob_default_environment() );
PortableServer::ObjectId型の値idをワイド文字列に変換します。
変換されたワイド文字列が返ります。
オブジェクトIDにヌル文字列などの不正な値が入っていたときはCORBA::BAD_PARAM例外が発生します。
PortableServer::wstring_to_ObjectId
PortableServer::string_to_ObjectId - 文字列をObjectIdに変換する
#include <orb.h> PortableServer::ObjectId* PortableServer::string_to_ObjectId( const char* str, CORBA::Environment& env = Ob_default_environment() );
文字列strをPortableServer::ObjectIdに変換します。
変換されたPortableServer::ObjectIdが返ります。
CORBA標準例外がthrowされます。
PortableServer::ObjectId_to_string
PortableServer::wstring_to_ObjectId - ワイド文字列をObjectIdに変換する
#include <orb.h> PortableServer::ObjectId* PortableServer::wstring_to_ObjectId( const wchar_t* str, CORBA::Environment& env = Ob_default_environment() );
ワイド文字列strをPortableServer::ObjectIdに変換します。
変換されたPortableServer::ObjectIdが返ります。
CORBA標準例外がthrowされます。
PortableServer::ObjectId_to_wstring
CORBA::Policy::copy - CORBA::Policyオブジェクトをコピーする
#include <orb.h> CORBA::Policy_ptr CORBA::Policy::copy( CORBA::Environment& env = Ob_default_environment() );
CORBA::Policyオブジェクトをコピーします。このコピーは元のCORBA::Policyオブジェクトとは一切の関係を持ちません。
コピーされたCORBA::Policyオブジェクトが返ります。
起こりません。
CORBA::Policy::destroy - CORBA::Policyオブジェクトを削除する
#include <orb.h> void CORBA::Policy::destroy( CORBA::Environment& env = Ob_default_environment() );
CORBA::Policyオブジェクトを削除します。
ありません。
削除できない場合は、CORBA::NO_PERMISSION例外がthrowされます。
PortableServer::ThreadPolicy::value - プログラマが作成した実装部分のスレッド処理方針を返す
#include <orb.h> PortableServer::ThreadPolicyValue PortableServer::ThreadPolicy::value( CORBA::Environment& env = Ob_default_environment() );
スレッド処理に関する方針の設定値を返します。
スレッド処理の方針はIDL enumのThreadPolicyValue型で表します。ThreadPolicyValueに定義されている値と意味は以下のとおりです。
ORB_CTRL_MODEL | プログラマが作成した実装部分が、サーバプロセスのスレッド処理方針 ( [ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.1. チュートリアル > 1.1.1. C++でCORBAアプリケーションを作成する > サーバでのマルチスレッド] 参照) にしたがい処理されます。マルチスレッドの場合、プログラマ実装部分がどのスレッドで処理されるか把握できません。 |
SINGLE_THREAD_MODEL | プログラマが作成した実装部分は必ずシングルスレッド(リクエスト待ちを行っているスレッド)で処理されます。 |
スレッド処理方針がPortableServer::ThreadPolicyValue型で返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_thread_policy
PortableServer::LifespanPolicy::value
- オブジェクトリファレンスの有効期間に関する方針を返す
#include <orb.h> PortableServer::LifespanPolicyValue PortableServer::LifespanPolicy::value( CORBA::Environment& env = Ob_default_environment() );
オブジェクトリファレンスの有効期間に関する方針の設定値を返します。
オブジェクトリファレンスの有効期間に関する方針はIDL enumのLifespanPolicyValue型で表します。LifespanPolicyValueに定義されている値と意味は以下のとおりです。
TRANSIENT | POAのインスタンスの寿命と一致させます。POAのインスタンスを削除した後で、オブジェクトを呼び出そうとするとCORBA::OBJECT_NOT_EXIST例外がthrowされます。 |
PERSISTENT | POAの方針や、POAに関連づけられているサーバントマネージャなどのオブジェクト、Active Object Mapに登録されている情報のすべてをPOAが削除される前の状態に復元できるのであれば、同じオブジェクトリファレンスをPOA再構築後も使用することができます。 |
オブジェクトリファレンスの有効期間に関する方針がPortableServer::LifespanPolicyValue型で返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_lifespan_policy
PortableServer::IdUniquenessPolicy::value
- 実装オブジェクトとオブジェクトIDとの対応に関する方針を返す
#include <orb.h> PortableServer::IdUniquenessPolicyValue PortableServer::IdUniquenessPolicy::value( CORBA::Environment& env = Ob_default_environment() );
オブジェクトIDと実装オブジェクトとの対応に関する方針の設定値を返します。
オブジェクトIDに関する方針はIDL enumのIdUniquenessPolicyValue型で表します。IdUniquenessPolicyValueに定義されている値と意味は以下のとおりです。
UNIQUE_ID | 実装オブジェクトとオブジェクトIDが1対1に対応づけられます。 |
MULTIPLE_ID | 1つの実装オブジェクトに複数のオブジェクトIDの対応づけが可能です。 |
オブジェクトIDと実装オブジェクトとの対応に関する方針がPortableServer::IdUniquenessPolicyValue型で返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_id_uniqueness_policy
PortableServer::IdAssignmentPolicy::value
- オブジェクトIDの生成に関する方針を返す
#include <orb.h> PortableServer::IdAssignmentPolicyValue PortableServer::IdAssignmentPolicy::value( CORBA::Environment& env = Ob_default_environment() );
オブジェクトIDの生成に関する方針の設定値を返します。
オブジェクトIDの生成に関する方針はIDL enumのIdAssignmentPolicyValue型で表します。IdAssignmentPolicyValueに定義されている値と意味は以下のとおりです。
USER_ID | 実装オブジェクトに対応づけるオブジェクトIDをプログラマが指定します。 |
SYSTEM_ID | 実装オブジェクトに対応づけるオブジェクトIDをPOAが生成します。 |
オブジェクトIDの生成にに関する方針がPortableServer::IdAssignmentPolicyValue型で返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_id_assignment_policy
PortableServer::ImplicitActivationPolicy::value
- 実装オブジェクトの暗黙的な活性化についての方針を返す
#include <orb.h> PortableServer::ImplicitActivationPolicyValue PortableServer::ImplicitActivationPolicy::value( CORBA::Environment& env = Ob_default_environment() );
実装オブジェクトの暗黙的な活性化についての方針の設定値を返します。
この方針はIDL enumのImplicitActivationPolicyValue型で表します。ImplicitActivationPolicyValueに定義されている値と意味は以下のとおりです。
IMPLICIT_ACTIVATION | 実装オブジェクトを暗黙的に活性化することを許可します。 |
NO_IMPLICIT_ACTIVATION | プログラマが明示的に実装オブジェクトを活性化する必要があります。 |
実装オブジェクトの暗黙的な活性化についての方針がPortableServer::ImplicitActivationPolicyValue型で返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_implicit_activation_policy
PortableServer::ServantRetentionPolicy::value
- 実装オブジェクトとの対応を保存しておくかどうかに関する方針を返す
#include <orb.h> PortableServer::ServantRetentionPolicyValue PortableServer::ServantRetentionPolicy::value( CORBA::Environment& env = Ob_default_environment() );
実装オブジェクトとオブジェクトIDの対応を保存しておくかどうかに関する方針の設定値を返します。
オブジェクトの対応を保存しておくかどうかに関する方針はIDL enumのServantRetentionPolicyValue型で表します。ServantRetentionPolicyValueに定義されている値と意味は以下のとおりです。
RETAIN | 活性化されている実装オブジェクトとオブジェクトIDの対応をPOA内にあるActive Object Mapに保存しておきます。Active Object Mapに登録されている場合は、登録情報から実装オブジェクトを探します。 |
NON_RETAIN | 活性化されている実装オブジェクトとオブジェクトIDの対応を保存しません。クライアントからの要求毎に実装オブジェクトを探します。 |
実装オブジェクトとの対応を保存しておくかどうかに関する方針がPortableServer::ServantRetentionPolicyValue型で返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_servant_retention_policy
PortableServer::RequestProcessingPolicy::value
- 実装オブジェクトを探す手順に関する方針を返す
#include <orb.h> PortableServer::RequestProcessingPolicyValue PortableServer::RequestProcessingPolicy::value( CORBA::Environment& env = Ob_default_environment() );
オブジェクトIDに対応づけられている実装オブジェクトを探す手順に関する方針の設定値を返します。この値はServantRetentionPolicyと関係があり、その相互作用で実装オブジェクトを探す手順が変わってきます。
RequestProcessingPolicyの値とServantRetentionPolicyの値の相互作用によるふるまいの違いを以下に示します。
RETAIN | NON_RETAIN | |
USE_ACTIVE_OBJECT_MAP_ONLY | Active Object Mapに登録されているものだけを探します。 | - |
USE_DEFAULT_SERVANT | まず、Active Object Mapから探します。もし見つからなければ、デフォルトサーバントを使います。このときデフォルトサーバントがなければCORBA::OBJ_ADAPTERが返ります。 | デフォルトサーバントを使います。デフォルトサーバントがない場合はCORBA::OBJ_ADAPTERが返ります。 |
USE_SERVANT_MANAGER | まず、Active Object Mapから探します。もし見つからなければ、ServantManagerに問い合わせます。このときServantManagerがなければCORBA::OBJ_ADAPTERが返ります。 | ServantManagerを使います。ServantManagerがない場合はCORBA::OBJ_ADAPTERが返ります。 |
実装オブジェクトを探す手順に関する方針がPortableServer::RequestProcessingPolicyValue型で返ります。
CORBA標準例外がthrowされます。
PortableServer::ServantRetentionPolicy::value, PortableServer::POA::create_request_processing_policy
PortableServer::POAManager::activate
- 状態をactiveに変更する
#include <orb.h> void PortableServer::POAManager::activate( CORBA::Environment& env = Ob_default_environment() );
holdingまたはdiscardingの状態からactiveの状態にします。
activeの状態になったPOAはクライアントからのリクエストを処理することができます。POAが貯えていたリクエストがあれば処理します。
ありません。
POAの状態がinactiveだったときはPortableServer::POAManager::AdapterInactive例外がthrowされます。
PortableServer::POAManager::hold_requests, PortableServer::POAManager::descard_requests, PortableServer::POAManager::deactivate
PortableServer::POAManager::hold_requests
- 状態をholdingに変更する
#include <orb.h> void PortableServer::POAManager::hold_requests( CORBA::Boolean wait_for_completion, CORBA::Environment& env = Ob_default_environment() );
activeまたはdiscardingの状態からholdingの状態にします。
holdingの状態のPOAはリクエストの処理は行わず、内部に貯えます。
wait_for_completionは、このオペレーションがすぐに返るどうかを指定するフラグです。wait_for_completionに1を指定すると、処理中のリクエストが終了するのを待ちます。0を指定すると、このオペレーションは直ちに返ります。
PortableServer::POA::crate_POAによって生成された直後のPOAもholdingの状態です。
ありません。
POAの状態がinactiveのときは、PortableServer::POAManager::AdapterInactive例外がthrowされます。
PortableServer::POAManager::activate, PortableServer::POAManager::descard_requests, PortableServer::POAManager::deactivate
PortableServer::POAManager::discard_requests
- 状態をdiscardingに変更する
#include <orb.h> void PortableServer::POAManager::discard_requests( CORBA::Boolean wait_for_completion, CORBA::Environment& env = Ob_default_environment() );
holdingまたはactiveの状態からdiscardingの状態にします。
discardingの状態のPOAはクライアントからのリクエストを読み捨てます。また、POAが貯えていたリクエストも破棄されます。discarding状態のPOAが管理するオブジェクトに呼び出しが行われたとき、クライアントへはCORBA::TRANSIENT例外がthrowされます。
wait_for_completionは、このオペレーションがすぐに返るどうかを指定するフラグです。wait_for_completionに1を指定すると、処理中のリクエストが終了するのを待ちます。0を指定すると、このオペレーションは直ちに返ります。
ありません。
POAの状態がinactiveだったときは、PortableServer::POAManager::AdapterInactive例外がthrowされます。
PortableServer::POAManager::activate, PortableServer::POAManager::hold_requests, PortableServer::POAManager::deactivate
PortableServer::POAManager::deactivate
- 状態をinactiveに変更する
#include <orb.h> void PortableServer::POAManager::deactivate( CORBA::Boolean etherealize_objects, CORBA::Boolean wait_for_completion, CORBA::Environment& env = Ob_default_environment() );
holding, activeまたはdiscardingの状態からinactiveの状態にします。
inactiveの状態になったPOAは、CORBA::ORB::shutdownが呼ばれるのを待っているだけで、送られたリクエストや貯えていたリクエストはすべて破棄されます。また、inactiveから別の状態になることはありません。この状態のPOAが管理しているオブジェクトに対して呼び出しが行われたとき、クライアントにはIIOP::CloseConnectionメッセージが送られます。
etherealize_objectsは、関連づけられているPOAのうち、ServantRetentionPolicyがRETAINでかつRequestProcessingPolicyがUSE_SERVANT_MANAGERに設定されているすべてのPOAのサーバントマネージャに対して、etherealizeオペレーションを呼び出すかどうかを指定するフラグです。etherealize_objectに1を指定するとetherealizeオペレーションを呼び出します。0を指定するとetherealizeオペレーションを呼び出しません。0は修復不可能なエラーが起こったときなどの重大な場面でPOAを終了させることを意味します。
wait_for_completionは、このオペレーションがすぐに返るどうかを指定するフラグです。wait_for_completionに1を指定すると、処理中のリクエストが終了するのを待ちます。0を指定すると、このオペレーションは直ちに返ります。
ありません。
POAの状態がinactiveだったときはPortableServer::POAManager::AdapterInactive例外がthrowされます。
PortableServer::POAManager::activate, PortableServer::POAManager::hold_requests, PortableServer::POAManager::descard_requests
PortableServer::AdapterActivator::unknown_adapter - POAを生成する
#include <orb.h> CORBA::Boolean PortableServer::AdapterActivator::unknown_adapter( PortableServer::POA_ptr parent, const char* name, CORBA::Environment& env = Ob_default_environment() );
ORBがリクエストに対応するPOAをたどっているとき、ある子POAが見つからない場合に呼び出されるコールバックルーチンです。このメソッドは要求された子POAを生成します。
もし複数のPOAが子POAの生成を要求したならば、ORBは一度だけこのメソッドを呼び出します。
parentには生成するPOAの親POAが渡されます。
nameには生成する子POAの名前が渡されます。
子POAが生成され、ORBが処理を続行することができるときは1を返します。そうでなければ0を返します。0を返したとき、ORBはクライアントにCORBA::OBJECT_NOT_EXIST例外を返します。
また、親POAにAdapterActivatorが存在しなかった場合も、ORBはクライアントにCORBA::OBJECT_NOT_EXIST例外を返します。
このメソッドは、プログラマが実装します。次に実装例を示します。
// C++ // AdapterActivatorの実装オブジェクトクラスを // POA_PortableServer::AdapterActivatorクラスの派生クラスとして作成 class MyImpl : public POA_PortableServer::AdapterActivator { public: MyImpl(); ~MyImpl(); CORBA::Boolean unknown_adapter(PortableServer::POA_ptr, const char*, CORBA::Environment&); ... }; CORBA::Boolean MyImpl::unknown_adapter( PortableServer::POA_ptr parent, const char* name, CORBA::Environment&) { // 渡されたPOAの名前(name)をもつPOAを作成していよいかどうかを調べる if (strcmp(name, "サポートしている名前") == 0) { // 作成してもよいとき // 既定値の方針をもつPOAを作成 CORBA::PolicyList plist; plist.length(0); PortableServer::POA_ptr newpoa = parent->create_POA(name, PorableServer::POAManager::_nil(), plist); return 1; } return 0; } main(...) { // ORBを初期化 CORBA::ORB_var orbobj = CORBA::ORB_init(...); ... PortableServer::POA_ptr rootPOA = ... // ルートPOAを取得 CORBA::PolicyList plist; plist.length(1); plist[0] = rootPOA->cretae_implicit_activation_policy(PortableServer::IMPLICIT_ACTIVATION); // AdapterActivatorを設定するPOAを作成 PortableServer::POA_ptr poa = rootPOA->create_POA("myPOA", PorableServer::POAManager::_nil(), plist); // AdapterActivatorの実装オブジェクトを作成 MyImpl* myactivator = new MyImpl; // AdapterActivatorの実装オブジェクトを活性化 PortableServer::AdapterActivator_var actp = myactivator->_this(); // AdapterActivatorをPOAに設定 poa->the_activator(actp); // AdapterActivatorを設定したPOAを活性化 PortableServer::POAManager_var poamgr = poa->the_POAManager(); poamgr->activate(); ... }
子POAが生成され、ORBが処理を続行することができるときは1を返します。そうでなければ0を返します。
子POAを生成できなかった場合は戻り値に0を返します。
PortableServer::POA::crate_POA, PortableServer::POA::find_POA
PortableServer::ServantActivator::incarnate
- 実装オブジェクトを活性化する
#include <orb.h> PortableServer::Servant PortableServer::ServantActivator::incarnate( const PortableServer::ObjectId& oid, PortableServer::POA_ptr adapter, CORBA::Environment& env = Ob_default_environment() );
POAがあるオブジェクトへのリクエストを受け取ったとき、実装オブジェクトが活性化されていない場合に呼び出されるコールバックルーチンです。このメソッドは渡されたオブジェクトIDに対応づける実装オブジェクトを割り当て、もしくは、生成します。
POAはこのメソッドの戻り値をActive Object Mapに登録します。
このメソッドが呼び出されるのは、POAの方針としてServantRetentionPolicyがRETAINでかつRequestProcessingPolicyがUSE_SERVANT_MANAGERに設定されている場合です。
oidにはリクエストに関連づけられたオブジェクトIDが渡されます。
adapterには活性化されるオブジェクトが属するPOAが渡されます。
リクエストを別のオブジェクトへ転送したい場合は、PortableServer::ForwardRequest例外を返します。このとき転送先のオブジェクトリファレンスを例外のforward_referenceメンバにセットしておきます。
このメソッドが返した実装オブジェクトが別のオブジェクトIDで活性化されており、かつ、POAの方針にIdUniquenessPolicyがUNIQUE_IDに設定されていた場合、POAはCORBA::OBJ_ADAPTER例外を返します。
このメソッドは、プログラマが実装します。以下に実装例を示します。
// C++ // ServantActivatorの実装オブジェクトクラスを // POA_PortableServer:ServantActivatorクラスの派生クラスとして作成 class MyImpl : public POA_PortableServer::ServantActivator { public: MyImpl(); ~MyImpl(); PortableServer::Servant incarnate( const PortableServer::ObjectId&, PortableServer::POA_ptr, CORBA::Environment&); void etherealize( const PortableServer::ObjectId&, PortableServer::POA_ptr, PortableServer::Servant, CORBA::Boolean, CORBA::Boolean, CORBA::Environment&); ... }; PortableServer::Servant MyImpl::incarnate( PortableServer::ObjectId& oid, PortableServer::POA_ptr adapter, CORBA::Environment&) { // オブジェクトIDを調べる char* str = PortableServer::ObjectId_to_string(oid); if (strcmp(str, "サポートしているID") == 0) { // 実装オブジェクトを作成できるとき return ...; // 実装オブジェクトを作りそれを返す } return 0; } main(...) { // ORBを初期化 CORBA::ORB_var orbobj = CORBA::ORB_init(...); ... PortableServer::POA_ptr rootPOA = ... // ルートPOAを取得 CORBA::PolicyList plist; plist.length(3); plist[0] = rootPOA->cretae_implicit_activation_policy(PortableServer::IMPLICIT_ACTIVATION); plist[1] = rootPOA->create_servant_retention_policy(PortableServer::RETAIN); plist[2] = rootPOA->create_request_processing_policy(PortableServer::USE_SERVANT_MANAGER); // ServantActivatorを設定するPOAを作成 PortableServer::POA_ptr poa = rootPOA->create_POA("myPOA", PortableServer::POAManager::_nil(), plist); // ServantActivatorの実装オブジェクトを作成 MyImpl* myactivator = new MyImpl; // ServantActivatorの実装オブジェクトを活性化 PortableServer::ServantActivator_var actp = myactivator->_this(); // ServantActivatorをPOAに設定 poa->set_servant_manager(actp); // ServantActivatorを設定したPOAを活性化 PortableServer::POAManager_var poamgr = poa->the_POAManager(); poamgr->activate(); ... }
オブジェクトIDに対応づけられる実装オブジェクトを返します。
メッセージを転送する場合はPortableServer::ForwardRequest例外を返します。
PortableServer::ServantActivator::etherealize, PortableServer::POA::set_servant_manager
PortableServer::ServantActivator::etherealize
- 実装オブジェクトを非活性化する
#include <orb.h> void PortableServer::ServantActivator::etherealize( const PortableServer::ObjectId& oid, PortableServer::POA_ptr adapter, PortableServer::Servant serv, CORBA::Boolean cleanup_in_progress, CORBA::Boolean remaining_activations, CORBA::Environment& env = Ob_default_environment() );
実装オブジェクトを非活性化するときに呼び出されるコールバックルーチンです。このメソッドは、incarnateによって活性化されたかどうかに関わらず、実装オブジェクトを非活性化します。
このメソッドが呼び出されるのは、POAの方針としてServantRetentionPolicyがRETAINでかつRequestProcessingPolicyがUSE_SERVANT_MANAGERに設定されている場合です。
oidには非活性化されるオブジェクトのオブジェクトIDが渡されます。
adapterには非活性化するオブジェクトが属するPOAが渡されます。
servには非活性化される実装オブジェクトが渡されます。
cleanup_in_progressにはPortableServer::POAManager::deactivateもしくはPortableServer::POA::destroyオペレーションが、etherealize_objects引数に1を指定して呼び出された場合には1が渡されます。それ以外の場合は0が渡されます。
remaining_activationsには、このメソッドが呼ばれたとき、adapterに渡されたPOAがservに渡された実装オブジェクトを別のオブジェクトIDとも関連づけていた場合は1が渡されます。そうでなければ0が渡されます。
非活性化は下記の状況で起こります。
このメソッドは、プログラマが実装します。以下に実装例を示します。
// C++ MyImpl::etherealize( PortableServer::ObjectId&, PortableServer::POA_ptr, PortableServer::Servant svt, CORBA::Boolean, CORBA::Boolean remaining_activations, CORBA::Environment&) { // 実装オブジェクトが別のオブジェクトIDで活性化されているかを調べる if (!remaining_activations) { // 活性化されていないとき // svtを解放 delete svt; } }
MyImplクラス定義、main関数の実装は、incarnateメソッドの例を参照してください。
ありません。
起こりません。
PortableServer::ServantActivator::incarnate, PortableServer::POA::set_servant_manager
PortableServer::ServantLocator::preinvoke
- 実装オブジェクトを活性化する
#include <orb.h> PortableServer::Servant PortableServer::ServantLocator::preinvoke( const PortableServer::ObjectId& oid, PortableServer::POA_ptr adapter, const char* operation, PortableServer::ServantLocator::Cookie& the_cookie, CORBA::Environment& env = Ob_default_environment() );
POAがあるオブジェクトへのリクエストを受け取ったとき、そのオブジェクトが活性化されていない場合に呼び出されるコールバックルーチンです。このメソッドは渡されたオブジェクトIDに合致した実装オブジェクトを活性化します。
このメソッドが呼び出されるのは、POAの方針としてServantRetentionPolicyがNON_RETAINでかつRequestProcessingPolicyがUSE_SERVANT_MANAGERに設定されている場合です。
oidにはリクエストに関連づけられたオブジェクトIDが渡されます。
adapterには活性化されるオブジェクトが属するPOAが渡されます。
operationには呼び出されたオペレーションの名前が渡されます。
the_cookieはPortableServer::ServantLocator::postinvokeが呼び出されたときに使用するためのものを返すOUT引数です。設定はサーバントマネージャが行います。
リクエストを別のオブジェクトへ転送したい場合は、PortableServer::ForwardRequest例外を返します。このとき転送先のオブジェクトリファレンスを例外のforward_referenceメンバにセットしておきます。
このメソッドは、プログラマが実装します。以下に実装例を示します。
// C++ // ServantLocatorの実装オブジェクトクラスを // POA_PortableServer:ServantLocatorクラスの派生クラスとして作成 class MyImpl : public POA_PortableServer::ServantLocator { public: MyImpl(); ~MyImpl(); PortableServer::Servant preinvoke( const PortableServer::ObjectId&, PortableServer::POA_ptr, const char*, PortableServer::ServantLocator::Cookie&, CORBA::Environment&); void postinvoke( const PortableServer::ObjectId&, PortableServer::POA_ptr, const char*, PortableServer::ServantLocator::Cookie, PortableServer::Servant, CORBA::Environment&); ... }; PortableServer::Servant MyImpl::preinvoke( PortableServer::ObjectId&, PortableServer::POA_ptr, const char*, PortableServer::ServantLocator::Cookie&, PortCORBA::Environment&) { if (...) { // リクエストを他のオブジェクトへ転送するとき CORBA::ORB_var orb = ... // ORBオブジェクトを取得 char* ref = ... // 転送するオブジェクトのIOR文字列を取得 // 文字列をオブジェクトに変換 CORBA::Object_var obj = orb->string_to_object(ref); // PortableServer::ForwardRequest例外をthrowする throw PortableServer::ForwardRequest(obj); } ... } main(...) { // ORBを初期化 CORBA::ORB_var orb = CORBA::ORB_init(...); ... PortableServer::POA_ptr rootPOA = ... // ルートPOAを取得 CORBA::PolicyList plist; plist.length(3); plist[0] = rootPOA->cretae_implicit_activation_policy(PortableServer::IMPLICIT_ACTIVATION); plist[1] = rootPOA->cretae_servant_retention_policy(PortableServer::NON_RETAIN); plist[2] = rootPOA->cretae_request_processing_policy(PortableServer::USE_SERVANT_MANAGER); // ServantLocatorを設定するPOAを作成 PortableServer::POA_ptr poa = rootPOA->create_POA("myPOA", PortableServer::POAManager::_nil(), plist); // ServantLocatorの実装オブジェクトを作成 MyImpl* mylocator = new MyImpl; // ServantLocatorの実装オブジェクトを活性化 PortableServer::ServantLocator_var actp = mylocator->_this(); // ServantLocatorをPOAに設定 poa->set_servant_manager(actp); // ServantLocatorを設定したPOAを活性化 PortableServer::POAManager_var poamgr = poa->the_POAManager(); poamgr->activate(); ... }
オブジェクトIDに合致した実装オブジェクトを返します。
メッセージを他のオブジェクトに転送する場合はPortableServer::ForwardRequest例外を返します。
PortableServer::ServantLocator::postinvoke, PortableServer::POA::set_servant_manager
PortableServer::ServantLocator::postinvoke
- リクエスト処理後に呼ばれるコールバックルーチン
#include <orb.h> PortableServer::Servant PortableServer::ServantLocator::postinvoke( const PortableServer::ObjectId& oid, PortableServer::POA_ptr adapter, const char* operation, PortableServer::ServantLocator::Cookie the_cookie, PortableServer::Servant the_servant, CORBA::Environment& env = Ob_default_environment() );
POAが活性化されたオブジェクトに処理を実行させた後に呼び出されるコールバックルーチンです。
このメソッドが呼び出されるのは、POAの方針としてServantRetentionPolicyがNON_RETAINでかつRequestProcessingPolicyがUSE_SERVANT_MANAGERに設定されている場合です。
oidには活性化されたオブジェクトのオブジェクトIDが渡されます。
adapterには活性化されたオブジェクトが属するPOAが渡されます。
operationにはリクエストされたオペレーション名が渡されます。
the_cookieにはPortableServer::ServantLocator::preinvokeが呼び出されたときに返されたものが渡されます。
the_servantには活性化された実装オブジェクトが渡されます。
このメソッドは、プログラマが実装します。以下に実装例を示します。
// C++ MyImpl::postinvoke( PortableServer::ObjectId& oid, PortableServer::POA_ptr adapter, const char* op, PortableServer::Cookie, PortableServer::Servant svt, CORBA::Environment&) { // 引数svtを解放する delete svt; }
MyImplクラス定義、main関数の実装は、incarnateメソッドの例を参照してください。
ありません。
起きないようにしなければなりません。
PortableServer::ServantLocator::preinvoke, PortableServer::POA::set_servant_manager
PortableServer::POA::create_POA - 子POAを生成する
#include <orb.h> PortableServer::POA_ptr PortableServer::POA::create_POA( const char* adapter_name, PortableServer::POAManager_ptr a_POAManager, const CORBA::PolicyList& policies, CORBA::Environment& env = Ob_default_environment() );
子POAを生成します。生成される子POAは親POAの方針を受け継ぎません。方針を指定しなかったときに生成される子POAの設定は以下のとおりです。
方針の種類 | 既定値 |
---|---|
ThreadPolicy | ORB_CTRL_MODEL |
LifespanPolicy | TRANSIENT |
IdUniquenessPolicy | UNIQUE_ID |
IdAssignmentPolicy | SYSTEM_ID |
ImplicitActivationPolicy | NO_IMPLICIT_ACTIVATION |
ServantRetentionPolicy | RETAIN |
RequestProcessingPolicy | USE_ACTIVE_OBJECT_MAP_ONLY |
adapter_nameには生成するPOAの名前を指定します。
a_POAManagerには生成するPOAを管理するPOAManagerを指定します。nilオブジェクト(PortableServer::POAManager::_nil()の戻り値)を指定した場合は新たにPOAManagerを生成します。
policiesには変更したい方針のシーケンスを指定します。CORBA::PolicyListはCORBA::Policyのシーケンスです。子POAの方針を既定値に設定するときは長さ0のシーケンスを渡します。変更する場合は、変更したい方針の数だけの長さのシーケンスを作成し、それぞれの方針を設定して渡します。
子POAの生成例は [ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.1. チュートリアル > 1.1.1. C++でCORBAアプリケーションを作成する > POAの作成] を参照してください。
処理方針の種類は「処理方針一覧」を参照してください。
生成したPOAが返ります。
adapter_nameに設定した名前がすでに使われている場合はPortableServer::POA::AdapterAlreadyExists例外がthrowされます。
policiesによって方針を変更しようとしたとき、方針の組み合わせに矛盾があった場合はPortableServer::POA::InvalidPolicy例外がthrowされます。
CORBA::PolicyListに設定した方針は、CORBA::PolicyListが解放されるときに自動的に解放されます。CORBA::Policy::destroyで削除してはいけません。
PortableServer::POA::find_POA - 子POAを検索する
#include <orb.h> PortableServer::POA_ptr PortableServer::POA::find_POA( const char* adapter_name, CORBA::Boolean activate_it, CORBA::Environment& env = Ob_default_environment() );
子POAを検索します。
adapter_nameには検索する子POAの名前を指定します。
activate_itには子POAが存在しなかったとき、AdapterActivatorを使って子POAの生成を試みるかどうかを指定します。子POAの生成を試みる場合は1を指定します。そうでなければ0を指定します。
見つけた、もしくは、AdapterActivatorによって生成された子POAが返ります。
子POAが見つからない、もしくは、AdapterActivatorによって生成することができなかった場合はPortableServer::POA::AdapterNonExistent例外がthrowされます。
PortableServer::AdapterActivatorクラス
PortableServer::POA::destroy - POAを削除する
#include <orb.h> void PortableServer::POA::destroy( CORBA::Boolean etherealize_objects, CORBA::Boolean wait_for_completion, CORBA::Environment& env = Ob_default_environment() );
このメソッドを呼び出したPOAおよびその配下にあるすべてのPOAを削除します。
etherealize_objectsにはサーバントマネージャのetherealizeオペレーション呼び出しを試みるかどうかを指定します。呼び出しを試みる場合は1を設定します。そうでなければ0を設定します。etherealizeオペレーションが呼び出されるには、1が設定されている以外に、POAの方針としてServantRetentionPolicyにRETAINが設定されていて、かつ、サーバントマネージャが存在している必要があります。
wait_for_completionには現在実行中のリクエストの処理が終了するのを待つかどうかを指定します。実行中の処理とetherealizeオペレーションの呼び出しがすべて終了するのを待つ場合は1を指定します。そうでなければ0を指定します。
ありません。
CORBA標準例外がthrowされます。
PortableServer::ServantActivator::etherealize
PortableServer::POA::create_thread_policy - ThreadPolicyを生成する
#include <orb.h> PortableServer::ThreadPolicy_ptr PortableServer::POA::create_thread_policy( PortableServer::ThreadPolicyValue value, CORBA::Environment& env = Ob_default_environment() );
ThreadPolicyを生成します。
valueには以下のうちの1つを指定します。
ORB_CTRL_MODEL | プログラマが作成した実装部分が、サーバプロセスのスレッド処理方針 ( [ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.1. チュートリアル > 1.1.1. C++でCORBAアプリケーションを作成する > サーバでのマルチスレッド] 参照) にしたがい処理されます。マルチスレッドの場合、プログラマ実装部分がどのスレッドで処理されるか把握できません。 |
SINGLE_THREAD_MODEL | プログラマが作成した実装部分は必ずシングルスレッド(リクエスト待ちを行っているスレッド)で処理されます。 |
生成したThreadPolicyが返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_POA
PortableServer::POA::create_lifespan_policy - LifespanPolicyを生成する
#include <orb.h> PortableServer::LifespanPolicy_ptr PortableServer::POA::create_lifespan_policy( PortableServer::LifespanPolicyValue value, CORBA::Environment& env = Ob_default_environment() );
LifespanPolicyを生成します。
valueには以下のうちの1つを指定します。
TRANSIENT | POAのインスタンスの寿命と一致させます。POAのインスタンスを削除した後で、オブジェクトを呼び出そうとするとCORBA::OBJECT_NOT_EXIST例外がthrowされます。 |
PERSISTENT | POAの方針や、POAに関連づけられているサーバントマネージャなどのオブジェクト、Active Object Mapに登録されている情報のすべてをPOAが削除される前の状態に復元できるのであれば、同じオブジェクトリファレンスをPOA再構築後も使用することができます。 |
生成したLifespanPolicyが返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_POA
PortableServer::POA::create_id_uniqueness_policy
- IdUniquenessPolicyを生成する
#include <orb.h> PortableServer::IdUniquenessPolicy_ptr PortableServer::POA::create_id_uniqueness_policy( PortableServer::IdUniquenessPolicyValue value, CORBA::Environment& env = Ob_default_environment() );
IdUniquenessPolicyを生成します。
valueには以下のうちの1つを指定します。
UNIQUE_ID | 実装オブジェクトとオブジェクトIDが1対1に対応づけられます。 |
MULTIPLE_ID | 1つの実装オブジェクトに複数のオブジェクトIDの対応づけが可能です。 |
生成したIdUniquenessPolicyが返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_POA
PortableServer::POA::create_id_assignment_policy
- IdAssignmentPolicyを生成する
#include <orb.h> PortableServer::IdAssignmentPolicy_ptr PortableServer::POA::create_id_assignment_policy( PortableServer::IdAssignmentPolicyValue value, CORBA::Environment& env = Ob_default_environment() );
IdAssignmentPolicyを生成します。
valueには以下のうちの1つを指定します。
USER_ID | 実装オブジェクトに対応づけるオブジェクトIDをプログラマが指定します。 |
SYSTEM_ID | 実装オブジェクトに対応づけるオブジェクトIDをPOAが生成します。 |
生成したIdAssignmentPolicyが返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_POA
PortableServer::POA::create_implicit_activation_policy
- ImplicitActivationPolicyを生成する
#include <orb.h> PortableServerImplicitActivationPolicy_ptr PortableServer::POA::create_implicit_activation_policy( PortableServer::ImplicitActivationPolicyValue value, CORBA::Environment& env = Ob_default_environment() );
ImplicitActivationPolicyを生成します。
valueには以下のうちの1つを指定します。
IMPLICIT_ACTIVATION | 実装オブジェクトを暗黙的に活性化することを許可します。 |
NO_IMPLICIT_ACTIVATION | プログラマが明示的に実装オブジェクトを活性化する必要があります。 |
生成したImplicitActivationPolicyが返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_POA
PortableServer::POA::create_servant_retention_policy
- ServantRetentionPolicyを生成する
#include <orb.h> PortableServer::ServantRetentionPolicy_ptr PortableServer::POA::create_servant_retention_policy( PortableServer::ServantRetentionPolicyValue value, CORBA::Environment& env = Ob_default_environment() );
ServantRetentionPolicyを生成します。
valueには以下のうちの1つを指定します。
RETAIN | 活性化されている実装オブジェクトとオブジェクトIDの対応をPOA内にあるActive Object Mapに保存しておきます。Active Object Mapに登録されている場合は、登録情報から実装オブジェクトを探します。 |
NON_RETAIN | 活性化されている実装オブジェクトとオブジェクトIDの対応を保存しません。クライアントからの要求毎に実装オブジェクトを探します。 |
生成したServantRetentionPolicyが返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_POA
PortableServer::POA::create_request_processing_policy
- RequestProcessingPolicyを生成する
#include <orb.h> PortableServer::RequestProcessingPolicy_ptr PortableServer::POA::create_request_processing_policy( RequestProcessingPolicyValue value, CORBA::Environment& env = Ob_default_environment() );
RequestProcessingPolicyを生成します。
valueには以下のうちの1つを指定します。
ServantRetentionPolicyにRETAINとNON_RETAINのどちらを指定するかによって動作が異なります。
RETAIN | NON_RETAIN | |
USE_ACTIVE_OBJECT_MAP_ONLY | Active Object Mapに登録されているものだけを探します。 | - |
USE_DEFAULT_SERVANT | まず、Active Object Mapから探します。もし見つからなければ、デフォルトサーバントを使います。このときデフォルトサーバントがなければCORBA::OBJ_ADAPTERが返ります。 | デフォルトサーバントを使います。デフォルトサーバントがない場合はCORBA::OBJ_ADAPTERが返ります。 |
USE_SERVANT_MANAGER | まず、Active Object Mapから探します。もし見つからなければ、ServantManagerに問い合わせます。このときServantManagerがなければCORBA::OBJ_ADAPTERが返ります。 | ServantManagerを使います。ServantManagerがない場合はCORBA::OBJ_ADAPTERが返ります。 |
生成したRequestProcessingPolicyが返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::create_POA
PortableServer::POA::the_name - POA名を取得する
#include <orb.h> char* PortableServer::POA::the_name( CORBA::Environment& env = Ob_default_environment() );
自分自身の名前を取得します。この名前は親POAから関連づけられています。
自分自身のPOA名が返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::the_parent - 親POAを取得する
#include <orb.h> PortableServer::POA_ptr PortableServer::POA::the_parent( CORBA::Environment& env = Ob_default_environment() );
親POAを取得します。もしルートPOAに対してこのメソッドを呼び出した場合はnilオブジェクトが返ります。
親のPOAが返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::the_POAManager - POAManagerを取得する
#include <orb.h> PortableServer::POAManager_ptr the_POAManager( CORBA::Environment& env = Ob_default_environment() );
自分自身に関連づけられているPOAManagerを取得します。
自分自身に関連づけられているPOAManagerが返ります。
CORBA標準例外がthrowされます。
PortableServer::POA::the_activator(AdapterActivator)
- AdapterActivatorを設定する
#include <orb.h> void PortableServer::POA::the_activator( PortableServer::AdapterActivator_ptr val, CORBA::Environment& env = Ob_default_environment() );
POAとAdapterActivatorを関連づけます。
生成された直後のPOAはAdapterActivatorを持ちません。
ルートPOAにアプリケーション固有のAdapterActivatorを割り当てても構いません。
ありません。
CORBA標準例外がthrowされます。
PortableServer::POA::the_activator
- AdapterActivatorを取得する
#include <orb.h> PortableServer::AdapterActivator_ptr PortableServer::POA::the_activator( CORBA::Environment& env = Ob_default_environment() );
現在関連づけられているAdapterActivatorを取得します。AdapterActivatorが設定されていない場合はnilオブジェクトが返されます。
現在関連づけられているAdapterActivatorが返されます。
CORBA標準例外がthrowされます。
PortableServer::POA::get_servant_manager
- サーバントマネージャを取得する
#include <orb.h> PortableServer::ServantManager_ptr PortableServer::POA::get_servant_manager( CORBA::Environment& env = Ob_default_environment() );
POAに関連づけられたサーバントマネージャを返します。
POAに関連づけられたサーバントマネージャがない場合はnilオブジェクトを返します。
POAに関連づけられたサーバントマネージャを返します。
もしPOAの方針としてRequestProcessingPolicyがUSE_SERVANT_MANAGERに設定されていない場合はPortableServer::POA::WrongPolicy例外がthrowされます。
PortableServer::POA::set_servant_manager
PortableServer::POA::set_servant_manager
- サーバントマネージャを設定する
#include <orb.h> void PortableServer::POA::set_servant_manager( PortableServer::ServantManager_ptr imgr, CORBA::Environment& env = Ob_default_environment() );
POAにサーバントマネージャimgrを関連づけます。
ありません。
POAの方針としてRequestProcessingPolicyがUSE_SERVANT_MANAGERに設定されていない場合はPortableServer::POA::WrongPolicy例外がthrowされます。
NON_RETAINのPOAにServantActivatorをセットしたとき、及びRETAINのPOAにServantLocatorをセットした場合はPortableServer::POA::WrongPolicy例外がthrowされます。
PortableServer::POA::get_servant_manager
PortableServer::POA::get_servant
- デフォルトサーバントを取得する
#include <orb.h> PortableServer::Servant PortableServer::POA::get_servant( CORBA::Environment& env = Ob_default_environment() );
POAに関連づけられているデフォルトサーバントを取得します。
POAに関連づけられているデフォルトサーバントを返します。
POAの方針としてRequestProcessingPolicyがUSE_DEFAULT_SERVANTに設定されていない場合はPortableServer::POA::WrongPolicyがthrowされます。デフォルトサーバントが設定されていない場合はPortableServer::POA::NoServantがthrowされます。
PortableServer::POA::set_servant
PortableServer::POA::set_servant
- デフォルトサーバントを設定する
#include <orb.h> void PortableServer::POA::set_servant( PortableServer::Servant p_servant, CORBA::Environment& env = Ob_default_environment() );
POAにデフォルトサーバントとなる実装オブジェクトp_servantを設定します。
デフォルトサーバントは、Active Object Mapに登録されていない実装オブジェクトに対するすべてのリクエストの処理で使われます。
ありません。
POAの方針としてRequestProcessingPolicyがUSE_DEFAULT_SERVANTに設定されていない場合はPortableServer::POA::WrongPolicyを返します。
PortableServer::POA::get_servant
PortableServer::POA::activate_object
- オブジェクトを活性化する
#include <orb.h> PortableServer::ObjectId* PortableServer::POA::activate_object( PortableServer::Servant p_servant, CORBA::Environment& env = Ob_default_environment() );
オブジェクトIDを生成し、生成したオブジェクトIDと実装オブジェクトp_servantをActive Object Mapに登録します。
このメソッドを呼び出すにはPOAの方針としてIdAssignmentPolicyにSYSTEM_IDでかつServantRetentionPolicyにRETAINが設定されている必要があります。
POAの方針としてIdUniquenessPolicyにUNIQUE_IDが設定されている場合は、p_servantがActive Object Mapに登録されていてはいけません。
生成したオブジェクトIDが返ります。
POAの方針としてIdAssignmentPolicyにSYSTEM_IDまたはServantRetentionPolicyにRETAINのどちらか一方でも設定されていない場合はPortableServer::POA::WrongPolicy例外がthrowされます。
POAの方針としてIdUniquenessPolicyがUNIQUE_IDに設定されていた場合、すでにp_servantがActive Object Mapに登録されていたときはPortableServer::POA::ServantAlreadyActive例外がthrowされます。
PortableServer::POA::deactivate_object
PortableServer::POA::activate_object_with_id
- オブジェクトIDを指定してオブジェクトを活性化する
#include <orb.h> void PortableServer::POA::activate_object_with_id( const PortableServer::ObjectId& id, PortableServer::Servant p_servant, CORBA::Environment& env = Ob_default_environment() );
オブジェクトIDを指定してオブジェクトを活性化します。
このメソッドはオブジェクトIDと実装オブジェクトの関連づけをActive Object Mapに保存します。したがって、POAの方針としてServantRetentionPolicyにRETAINが設定されている必要があります。
idには実装オブジェクトと関連づけるオブジェクトIDを指定します。
idはこのメソッドを呼び出した時点で実装オブジェクトと関連づけられていてはいけません。また、POAの方針としてIdAssignmentPolicyにSYSTEM_IDが設定されている場合、プログラマが定義したオブジェクトIDや別のPOAで生成されたオブジェクトIDを指定してはいけません。
POAの方針としてLifespanPolicyにPERSISTENTが設定されていた場合、過去にこのPOAで生成されたオブジェクトIDを指定することは可能です。
p_servantにはidと関連づける実装オブジェクトを指定します。POAの方針にUNIQUE_IDが設定されている場合、他のオブジェクトIDで活性化されている実装オブジェクトを指定してはいけません。
ありません。
POAの方針としてServantRetentionPolicyにRETAINが設定されていない場合はPortableServer::POA::WrongPolicy例外がthrowされます。
すでに実装オブジェクトと関連づけられているオブジェクトIDを指定した場合はPortableServer::POA::ObjectAlreadyActive例外がthrowされます。
POAの方針としてIdUniquenessPolicyにUNIQUE_IDが指定されているとき、実装オブジェクトがすでに活性化されていた場合はPortableServer::POA::ServantAlreadyActive例外がthrowされます。
POAの方針としてIdAssignmentPolicyにSYSTEM_IDが指定されていたとき、プログラマが定義したオブジェクトIDや他のPOAで生成したオブジェクトIDを指定した場合はCORBA::BAD_PARAM例外がthrowされます。
PortableServer::POA::deactivate_object
PortableServer::POA::deactivate_object
- オブジェクトを非活性化する
#include <orb.h> void PortableServer::POA::deactivate_object( const PortableServer::ObjectId& oid, CORBA::Environment& env = Ob_default_environment() );
oidに対応した実装オブジェクトをActive Object Mapから削除します。
サーバントマネージャが設定されている場合、PortableServer::ServantActivator::etherealizeが呼び出されます。
このメソッドを実行するにはPOAの方針としてServantRetentionPolicyにRETAINが設定されている必要があります。
ありません。
POAの方針としてServantRetentionPolicyにRETAINが設定されていない場合はPortableServer::POA::WrongPolicy例外がthrowされます。
すでに非活性化されていた場合はPortableServer::POA::ObjectNotActive例外がthrowされます。
PortableServer::ServantActivator::etherealize
PortableServer::POA::create_reference
- オブジェクトリファレンスを生成する
#include <orb.h> CORBA::Object_ptr PortableServer::POA::create_reference( const char* intf, CORBA::Environment& env = Ob_default_environment() );
POAが自動生成したオブジェクトIDとintfで指定したリポジトリIDを持ったオブジェクトリファレンスを生成します。
生成したオブジェクトリファレンスは、サーバントマネージャを介したオブジェクト呼び出しに使われます。
このメソッドを呼び出すには、POAの方針としてIdAssignmentPolicyにSYSTEM_IDが設定されている必要があります。
生成されたオブジェクトリファレンスが返ります。
POAの方針としてIdAssignmentPolicyにSYSTEM_IDが設定されていなかった場合はPortableServer::POA::WrongPolicy例外がthrowされます。
PortableServer::POA::create_reference_with_id
- オブジェクトIDを指定してオブジェクトリファレンスを生成する
#include <orb.h> CORBA::Object_ptr PortableServer::POA::create_reference_with_id( const PortableServer::ObjectId& oid, const char* intf, CORBA::Environment& env = Ob_default_environment() );
oidで指定したオブジェクトIDとintfで指定したリポジトリIDを持ったオブジェクトリファレンスを生成します。
POAの方針としてIdAssignmentPolicyにSYSTEM_IDが設定されているとき、oidにプログラマが定義したオブジェクトIDや他のPOAで生成されたオブジェクトIDを指定してはいけません。
POAの方針としてLifespanPolicyにPERSISTENTが設定されていた場合、過去にこのPOAで生成されたオブジェクトIDを指定することは可能です。
生成されたオブジェクトリファレンスが返ります。
POAの方針としてIdAssignmentPolicyにSYSTEM_IDが設定されているとき、oidにプログラマが定義したオブジェクトIDや他のPOAで生成されたオブジェクトIDを指定した場合は、CORBA::BAD_PARAM例外がthrowされます。
PortableServer::POA::servant_to_id
- 実装オブジェクトに対応づけられているオブジェクトIDを取得する
#include <orb.h> PortableServer::ObjectId* PortableServer::POA::servant_to_id( PortableServer::Servant p_servant, CORBA::Environment& env = Ob_default_environment() );
実装オブジェクトに対応づけられているオブジェクトIDを返します。
このメソッドはPOAの方針と実装オブジェクトが活性化されているかどうかによって以下の3種類の動作をします。
実装オブジェクトに関連づけられたオブジェクトIDが返ります。
POAの方針がServantRetentionPolicyにRETAIN、IdUniquenessPolicyにUNIQUE_IDの組み合わせか、ServantRetentionPolicyにRETAIN、ImplicitActivationPolicyにIMPLICIT_ACTIVATIONの組み合わせ以外の場合はPortableServer::POA::WrongPolicy例外がthrowされます。
実装オブジェクトが活性化されていない、もしくは、活性化できないときはPortableServer::POA::ServantNotActive例外がthrowされます。
PortableServer::POA::servant_to_reference
- 実装オブジェクトに対応づけられているオブジェクトリファレンスを取得する
#include <orb.h> CORBA::Object_ptr PortableServer::POA::servant_to_reference( PortableServer::Servant p_servant, CORBA::Environment& env = Ob_default_environment() );
実装オブジェクトに対応づけられているオブジェクトリファレンスを返します。
このメソッドはPOAの方針と実装オブジェクトが活性化されているかどうかによって以下の3種類の動作をします。
実装オブジェクトに関連づけられたオブジェクトリファレンスが返ります。
POAの方針としてServantRetentionPolicyにRETAIN、IdUniquenessPolicyにUNIQUE_IDの組み合わせか、ServantRetentionPolicyにRETAIN、ImplicitActivationPolicyにIMPLICIT_ACTIVATIONの組み合わせ以外の場合はPortableServer::POA::WrongPolicy例外がthrowされます。
実装オブジェクトが活性化されていない、もしくは、活性化できないときはPortableServer::POA::ServantNotActive例外がthrowされます。
PortableServer::POA::reference_to_servant
- オブジェクトリファレンスに対応した実装オブジェクトを取得する
#include <orb.h> PortableServer::Servant PortableServer::POA::reference_to_servant( CORBA::Object_ptr reference, CORBA::Environment& env = Ob_default_environment() );
オブジェクトリファレンスreferenceに対応した実装オブジェクトを取得します。
POAの方針としてServantRetentionPolicyにRETAINが指定されている場合は、Active Object Mapの中からreferenceに対応する実装オブジェクトを返します。
POAの方針としてServantRetentionPolicyにUSE_DEFAULT_SERVANTが指定されていて、かつ、デフォルトサーバントが登録されている場合は、デフォルトサーバントを返します。
referenceに対応した実装オブジェクトが返ります。
POAの方針としてServantRetentionPolicyにRETAINもしくはUSE_DEFAULT_SERVANTが指定されていない場合は、PortableServer::POA::WrongPolicy例外がthrowされます。
POAの方針としてServantRetentionPolicyにRETAINが設定されていてActive Object Mapに対応する実装オブジェクトがない場合、および、POAの方針としてServantRetentionPolicyにUSE_DEFAULT_SERVANTが指定されているがデフォルトサーバントが登録されていない場合はPortableServer::POA::ObjectNotActive例外がthrowされます。
オブジェクトリファレンスがこのPOAで生成されていない場合は、PortableServer::POA::WrongAdapter例外がthrowされます。
PortableServer::POA::reference_to_id
- オブジェクトリファレンスに含まれているオブジェクトIDを取り出す
#include <orb.h> PortableServer::ObjectId* PortableServer::POA::reference_to_id( CORBA::Object_ptr reference, CORBA::Environment& env = Ob_default_environment() );
オブジェクトリファレンスreferenceに含まれているオブジェクトIDを取り出します。
このメソッドは、referenceを生成したPOAに対して呼び出します。
このメソッドを呼び出すときに、referenceに対応したオブジェクトが活性化されている必要はありません。
referenceに含まれているオブジェクトIDが返ります。
referenceに他のPOAで生成されたオブジェクトリファレンスを渡した場合は、PortableServer::POA::WrongAdapter例外がthrowされます。
PortableServer::POA::WrongPolicyは将来の拡張のためであり、この例外が返ることはありません。
PortableServer::POA::id_to_servant
- オブジェクトIDに対応づけられている実装オブジェクトを取得する
#include <orb.h> PortableServer::Servant PortableServer::POA::id_to_servant( const PortableServer::ObjectId& oid, CORBA::Environment& env = Ob_default_environment() );
オブジェクトIDに対応づけられている実装オブジェクトを返します。
oidには検索する実装オブジェクトに対応づけられているオブジェクトIDを指定します。
このメソッドを呼び出すには、POAの方針としてServantRetentionPolicyにRETAINが設定されていて、かつ、実装オブジェクトが活性化されている必要があります。
オブジェクトIDに対応づけられている実装オブジェクトが返ります。
POAの方針としてServantRetentionPolicyにRETAINが設定されていない場合は、PortableServer::POA::WrongPolicy例外がthrowされます。
活性化されていないオブジェクトのオブジェクトIDを渡した場合は、PortableServer::POA::ObjectNotActive例外がthrowされます。
PortableServer::POA::id_to_reference
- オブジェクトIDに対応したオブジェクトリファレンスを取得する
#include <orb.h> CORBA::Object_ptr PortableServer::POA::id_to_reference( const PortableServer::ObjectId& oid, CORBA::Environment& env = Ob_default_environment() );
oidと関連づけられたオブジェクトリファレンスを取得します。
このメソッドを呼び出すには、POAの方針としてServantRetentionPolicyにRETAINが設定されていて、かつ、実装オブジェクトが活性化されている必要があります。
oidと関連づけられたオブジェクトリファレンスが返ります。
POAの方針としてServantRetentionPolicyにRETAINが設定されていない場合は、PortableServer::POA::WrongPolicy例外がthrowされます。
活性化されていないオブジェクトのオブジェクトIDを渡した場合は、PortableServer::POA::ObjectNotActive例外がthrowされます。
PortableServer::Current::get_POA
- 現在処理しているPOAを取得する
#include <orb.h> PortableServer::POA_ptr PortableServer::Current::get_POA( CORBA::Environment& env = Ob_default_environment() );
現在リクエスト処理しているPOAを取得します。
このメソッドを呼び出すには、リクエスト処理部内である必要があります。
現在リクエスト処理しているPOAが返ります。
リクエスト処理部の外で呼び出された場合は、PortableServer::Current::NoContext例外がthrowされます。
PortableServer::Current::get_object_id
- 現在処理しているオブジェクトのIDを取得する
#include <orb.h> CORBA::Object_ptr PortableServer::Current::get_object_id( CORBA::Environment& env = Ob_default_environment() );
現在リクエスト処理しているオブジェクトのIDを取得します。
このメソッドを呼び出すには、リクエスト処理部内である必要があります。
現在リクエスト処理しているオブジェクトのIDが返ります。
リクエスト処理部の外で呼び出された場合は、PortableServer::Current::NoContext例外がthrowされます。
プログラマが作成した実装部分をシングルスレッドで処理すか、マルチスレッドで処理するかの方針を表します。
方針の種類 | 意味 |
---|---|
ORB_CTRL_MODEL | プログラマが作成した実装部分が、サーバプロセスのスレッド処理方針 ( [ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.1. チュートリアル > 1.1.1. C++でCORBAアプリケーションを作成する > サーバでのマルチスレッド] 参照) にしたがい処理されます。マルチスレッドの場合、プログラマ実装部分がどのスレッドで処理されるか把握できません。 |
SINGLE_THREAD_MODEL | プログラマが作成した実装部分は必ずシングルスレッド(リクエスト待ちを行っているスレッド)で処理されます。 |
オブジェクトリファレンスの有効期間に関する方針を表します。
方針の種類 | 意味 |
---|---|
TRANSIENT | POAのインスタンスの寿命と一致させます。POAのインスタンスを削除した後で、オブジェクトを呼び出そうとするとCORBA::OBJECT_NOT_EXIST例外がthrowされます。 |
PERSISTENT | POAの方針や、POAに関連づけられているサーバントマネージャなどのオブジェクト、Active Object Mapに登録されている情報のすべてをPOAが削除される前の状態に復元できるのであれば、同じオブジェクトリファレンスをPOA再構築後も使用することができます。 |
実装オブジェクトとオブジェクトIDとの対応に関する方針を表します。
方針の種類 | 意味 |
---|---|
UNIQUE_ID | 実装オブジェクトとオブジェクトIDが1対1に対応づけられます。 |
MULTIPLE_ID | 1つの実装オブジェクトに複数のオブジェクトIDの対応づけが可能です。 |
オブジェクトIDをプログラマとシステムのどちらが生成するかに関する方針を表します。
方針の種類 | 意味 |
---|---|
USER_ID | 実装オブジェクトに対応づけるオブジェクトIDをプログラマが指定します。 |
SYSTEM_ID | 実装オブジェクトに対応づけるオブジェクトIDをPOAが生成します。 |
活性化通知の方針を表します。
方針の種類 | 意味 |
---|---|
IMPLICIT_ACTIVATION | 実装オブジェクトを暗黙的に活性化することを許可します。 |
NO_IMPLICIT_ACTIVATION | プログラマが明示的に実装オブジェクトを活性化する必要があります。 |
実装オブジェクトとオブジェクトの対応を保存しておくかどうかに関する方針を表します。
方針の種類 | 意味 |
---|---|
RETAIN | 活性化されている実装オブジェクトとオブジェクトIDの対応をPOA内にあるActive Object Mapに保存しておきます。Active Object Mapに登録されている場合は、登録情報から実装オブジェクトを探します。 |
NON_RETAIN | 活性化されている実装オブジェクトとオブジェクトIDの対応を保存しません。クライアントからの要求毎に実装オブジェクトを探します。 |
実装オブジェクトとオブジェクトIDの対応を探す手順に関する方針を表します。この方針はPortableServer::ServantRetentionPolicyとの相互作用で実装オブジェクトを探す手順が変化します。
RETAIN | NON_RETAIN | |
USE_ACTIVE_OBJECT_MAP_ONLY | Active Object Mapに登録されているものだけを探します。 | - |
USE_DEFAULT_SERVANT | まず、Active Object Mapから探します。もし見つからなければ、デフォルトサーバントを使います。このときデフォルトサーバントがなければCORBA::OBJ_ADAPTERが返ります。 | デフォルトサーバントを使います。デフォルトサーバントがない場合はCORBA::OBJ_ADAPTERが返ります。 |
USE_SERVANT_MANAGER | まず、Active Object Mapから探します。もし見つからなければ、ServantManagerに問い合わせます。このときServantManagerがなければCORBA::OBJ_ADAPTERが返ります。 | ServantManagerを使います。ServantManagerがない場合はCORBA::OBJ_ADAPTERが返ります。 |
RETAIN | NON_RETAIN | |
USE_ACTIVE_OBJECT_MAP_ONLY | OK | NG |
USE_SERVANT_MANAGER | ServantActivatorを使う | ServantLocatorを使う |
USE_DEFAULT_SERVANT | Active ObjectMapにないときデフォルトサーバントを使う | 常にデフォルトサーバントを使う |
IMPLICIT_ACTIVATION | OK | NG |
NO_IMPLICIT_ACTIVATION | OK | OK |
UNIQUE_ID | MULTIPLE_ID | |
USE_DEFAULT_SERVANT | NG | OK |
USER_ID | SYSTEM_ID | |
IMPLICIT_ACTIVATION | NG | OK |
NO_IMPLICIT_ACTIVATION | OK | OK |
他の方針の影響を受けないものは以下のとおりです。
ThreadPolicy : SINGLE_THREAD_MODEL, ORB_CTRL_MODEL