Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド
スレッドポリシーでは,POAが使用するスレッドモデルを指定します。ThreadPolicyに使用できる値は次のとおりです。
- ORB_CTRL_MODEL(デフォルト)
- POAはリクエストをスレッドに割り当てる責任を負います。マルチスレッド環境では,同時に発生した複数のリクエストは,複数のスレッドで処理されます。Borland Enterprise Server VisiBrokerはマルチスレッドモデルを使用することに注意してください。
- SINGLE_THREAD_MODEL
- POAプロセスはリクエストを順次処理します。マルチスレッド環境では,POAがサーバントおよびサーバントマネージャに行う呼び出しはすべてスレッドセーフです。
- MAIN_THREAD_MODEL
- 呼び出しは識別されたメインスレッドで処理されます。このポリシーを使用するPOAに対するすべてのリクエストは,順次処理されます。マルチスレッド環境では,このポリシーを使用するPOAによって呼び出されるサーバントのすべての処理は,スレッドセーフでなければなりません。
- アプリケーションプログラマは,ORB::run()メソッドまたはORB::perform_work()メソッドを呼び出してメインスレッドを指定します。このメソッドの詳細については,「7.4 オブジェクトの活性化」を参照してください。
ライフスパンポリシーでは,POAでインプリメントされたオブジェクトのライフスパンを指定します。LifespanPolicyに使用できる値は次のとおりです。
- TRANSIENT(デフォルト)
- POAが活性化したトランジェントオブジェクトは,そのオブジェクトが生成されたPOA内でしか存在できません。POAが非活性化されてから,POAが生成したオブジェクトリファレンスを使おうとすると,OBJECT_NOT_EXIST例外が発生します。
- PERSISTENT
- POAが活性化したパーシステントオブジェクトは,そのオブジェクトが最初に生成されたプロセスが消滅しても存在できます。パーシステントオブジェクトで呼び出されたリクエストは,プロセス,POA,およびオブジェクトをインプリメントしたサーバントを暗黙的に活性化します。
ID Uniqueness(オブジェクトIDの一意性)ポリシーでは,多くのabstractオブジェクトが一つのサーバントを共有できるようにします。IdUniquenessPolicyに使用できる値は次のとおりです。
- UNIQUE_ID(デフォルト)
- 活性化されたサーバントはオブジェクトIDを一つだけサポートします。
- MULTIPLE_ID
- 活性化されたサーバントは一つ以上のオブジェクトIDを持てます。オブジェクトIDはランタイムに呼び出されているメソッド内で決定しなければなりません。
ID Assignment(ID割り当て)ポリシーでは,サーバアプリケーションとPOAのどちらがオブジェクトIDを生成するかを指定します。IdAssignmentPolicyに使用できる値は次のとおりです。
- USER_ID
- オブジェクトはアプリケーションによってオブジェクトIDを割り当てられます。
- SYSTEM_ID(デフォルト)
- オブジェクトはPOAによってオブジェクトIDを割り当てられます。PERSISTENTポリシーも設定している場合,オブジェクトIDは同じPOAのすべての実体化にわたって一意でなければなりません。
通常,USER_IDはパーシステントオブジェクト用であり,SYSTEM_IDはトランジェントオブジェクト用です。
Servant Retention(サーバント保持)ポリシーでは,アクティブオブジェクトマップ内のアクティブなサーバントをPOAが保持するかどうかを指定します。ServantRetentionPolicyに指定できる値は次のとおりです。
- RETAIN(デフォルト)
- POAはアクティブオブジェクトマップにアクティブなサーバントを保持します。そのため,POAにオブジェクトの探索を要求すると,アクティブオブジェクトマップからの探索が行われます。RETAINは通常,ServantActivatorまたはPOAの明示的な活性化メソッドと一緒に使用します。
- NON_RETAIN
- POAはアクティブオブジェクトマップにアクティブなサーバントを保持しません。そのため,POAにオブジェクトの探索を要求しても,アクティブオブジェクトマップからの探索は行われません。
- NON_RETAINは通常,ServantLocatorと一緒に使用しなければなりません。
ServantActivatorとServantLocatorは,サーバントマネージャのタイプです。サーバントマネージャの詳細については,「7.5 サーバントとサーバントマネージャの使用」を参照してください。
Request Processing(リクエスト処理)ポリシーでは,POAのリクエストの処理方法を指定します。RequestProcessingPolicyに指定できる値は次のとおりです。
- USE_ACTIVE_OBJECT_MAP_ONLY(デフォルト)
- アクティブオブジェクトマップにオブジェクトIDが存在しなければ,OBJECT_NOT_EXIST例外が返されます。POAにこの値を指定する場合は,必ずRETAINポリシーも指定してください。
- USE_DEFAULT_SERVANT
- アクティブオブジェクトマップにオブジェクトIDが存在していないか,またはNON_RETAINポリシーが設定されていれば,リクエストはデフォルトサーバントにディスパッチされます。デフォルトサーバントが登録されていなければ,OBJ_ADAPTER例外が返されます。POAにこの値を指定する場合は,必ずMULTIPLE_IDポリシーも指定してください。
- USE_SERVANT_MANAGER
- アクティブオブジェクトマップにオブジェクトIDが存在していないか,またはNON_RETAINポリシーが設定されていれば,サーバントマネージャを使用してサーバントを取得します。
Implicit Activation(暗黙的な活性化)ポリシーでは,POAがサーバントの暗黙的な活性化をサポートするかどうかを指定します。ImplicitActivationPolicyに指定できる値は次のとおりです。
- IMPLICIT_ ACTIVATION
- POAはサーバントの暗黙的な活性化をサポートします。サーバントを活性化するには,次の二つの方法があります。
- POA::servant_to_reference()メソッド(C++),またはorg.omg.PortableServer.POA.servant_to_reference()メソッド(Java)を使用してサーバントをオブジェクトリファレンスに変換する。
- サーバントで_this()メソッドを呼び出す。
- POAにこの値を指定する場合は,必ずSYSTEM_IDポリシーとRETAINポリシーも指定してください。
- NO_IMPLICIT_ACTIVATION(デフォルト)
- POAはサーバントの暗黙的な活性化をサポートしません。
Bind Support(バインドサポート)ポリシー(Borland Enterprise Server VisiBroker固有のポリシー)はPOAとアクティブなオブジェクトのBorland Enterprise Server VisiBroker osagentへの登録を制御します。数千ものオブジェクトがある場合,そのすべてをosagentに登録するのは好ましくありません。その代わりに,POAをosagentに登録できます。クライアントがリクエストすると,osagentがリクエストを正しく転送できるように,POA名とオブジェクトIDがバインドリクエストに含まれます。
BindSupportPolicyに指定できる値は次のとおりです。
- BY_INSTANCE
- すべてのアクティブなオブジェクトをosagentに登録します。POAにこの値を指定する場合は,必ずPERSISTENTポリシーとRETAINポリシーも指定してください。
- BY_POA(デフォルト)
- POAだけをosagentに登録します。POAにこの値を指定する場合は,必ずPERSISTENTポリシーも指定してください。
- NONE
- POAもアクティブなオブジェクトもosagentに登録しません。
All Rights Reserved. Copyright (C) 2008, Hitachi, Ltd.
COPYRIGHT (C) 1992-2004 Borland Software Corporation. All rights reserved.