パッケージ org.omg.PortableServer
Javaでは、POA (Portable Object Adaptor)ベースのDSI (Dynamic Skeleton Interface)サーバントは、標準のDynamicImplementation
クラスから継承します。これは、Servant
クラスから継承しています。 ネイティブなServant
型は、POAのPortableServer
モジュールによって定義されます。 Javaでは、Servant
型はJavaのorg.omg.PortableServer.Servant
クラスにマップされます。 このクラスは、すべてのPOAサーバント実装の基底クラスとして機能し、アプリケーション・プログラマが呼び出すことのできるいくつかのメソッドのほかに、POAそのものによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドも提供します。
パッケージの仕様
Java(TM) Platform, Standard Edition 6が準拠する公式のOMG仕様のサポート・セクションの正確なリストは、「Java(TM) SE 6での正式なCORBAサポート仕様」を参照してください。
POA関連のインタフェース
PortableServer
モジュールは、次のPOA関連のインタフェースを定義します。
POA
POAManager
ServantManager
ServantActivator
ServantLocator
AdapterActivator
ThreadPolicy
LifespanPolicy
IdUniquenessPolicy
IdAssignmentPolicy
ImplicitActivationPolicy
ServantRetentionPolicy
RequestProcessingPolicy
Current
また、POAはServant
ネイティブ型も定義します。
オペレーション・クラス
上記の各インタフェースには、Operations
インタフェースが関連付けられています。 Operations
インタフェースは、idlj
コンパイラによって生成され、それに関連付けられたインタフェースに定義されているメソッドのメソッド・シグニチャを格納します。 Operations
インタフェースはクライアントとサーバーの両方からアクセスできますが、それに関連付けられたインタフェースはクライアントからしか呼び出せません。
値クラス
接尾辞PolicyValue
で終わるクラスは、POAのポリシーを設定するcreate_POA
呼出しに使用される値を提供します。 デモンストレーションについては、次のコード例を参照してください。 PolicyValue
ファイルには、次のものがあります。
IdAssignmentPolicyValue
IdUniquenessPolicyValue
ImplicitActivationPolicyValue
LifespanPolicyValue
RequestProcessingPolicyValue
ServantRetentionPolicyValue
ThreadPolicyValue
ヘルパー・クラス
OMG IDLインタフェースのすべてのユーザー定義型で生成されるヘルパー・クラスは、ユーザー定義型の操作に必要なstaticメソッドを提供します。 ヘルパー・クラスには、アプリケーション・プログラマが使用するメソッドが1つだけあります(narrow
メソッド)。 IDLインタフェースからマップされるJavaインタフェースのみが、narrow
メソッドを含むヘルパー・クラスを備えています。したがって、PortableServer
パッケージでは、次のクラスにのみnarrow
メソッドがあります。
ForwardRequestHelper
ServantActivatorHelper
ServantLocatorHelper
POAクラス
POAクラスは、ServantActivator
またはServantLocator
の実装に使用します。
例外
ForwardRequest
例外は、現在のリクエストと後続のForwardRequest
リクエストをその例外のforward_reference
メンバーに示されたオブジェクトに配信する責任があることをORBに通知します。
アプリケーション・プログラマによって実装されるインタフェース
PortableServer
によって行われる処理のほとんどは、ユーザーには見えません。 このため、上記のインタフェースのうちでプログラマが使用するものはほんのわずかです。 残りのインタフェースは、ORB実装によって提供されます。 アプリケーション・プログラマが使用するインタフェースは、次のとおりです。
AdapterActivator
アダプタ・アクティベータはPOAと関連付けられます。 アダプタ・アクティベータは、子POA (POAの子供のどれか)の名前を指定する要求を受信したときの副作用として、またはactivateパラメータ値を
TRUE
に設定してfind_POA
を呼び出したときに、POAが必要に応じて子POAを作成できるようにします。 実行の初めで必要なPOAをすべて作成するアプリケーション・サーバーでは、アダプタ・アクティベータを使用する必要も用意する必要もありません。つまり、要求の処理時にPOAを作成する必要がある場合にのみアダプタ・アクティベータが必要になります。ServantLocator
NON_RETAIN
ポリシーを持つPOAは、ServantLocator
であるサーバント・マネージャを使用します。ServantActivator
RETAIN
ポリシーを持つPOAは、ServantActivator
であるサーバント・マネージャを使用します。
パッケージorg.omg.PortableServer.ServantLocatorPackage
このパッケージは、Cookie
型をout
パラメータとして渡すためのCookieHolder
クラスを提供します。 CookieHolder
クラスは、基底型のほかのホルダー・クラスと同じパターンに従います。
関連項目
Java IDLの概要については、以下を参照してください。: Java IDLホームページ.
コード例
サーバー・コードの例
import javax.naming.InitialContext; import javax.naming.Context; import javax.rmi.PortableRemoteObject ; import com.sun.corba.se.impl.poa.POAORB; import org.omg.PortableServer.*; import java.util.*; import org.omg.CORBA.*; import javax.rmi.CORBA.Stub; import javax.rmi.CORBA.Util; public class HelloServer { public HelloServer(String[] args) { try { Properties p = System.getProperties(); // p.put("org.omg.CORBA.ORBClass", "com.sun.corba.ee.internal.POA.POAORB"); ORB orb = ORB.init( args, p ); POA rootPOA = (POA)orb.resolve_initial_references("RootPOA"); Policy[] tpolicy = new Policy[3]; tpolicy[0] = rootPOA.create_lifespan_policy( LifespanPolicyValue.TRANSIENT ); tpolicy[1] = rootPOA.create_request_processing_policy( RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY ); tpolicy[2] = rootPOA.create_servant_retention_policy( ServantRetentionPolicyValue.RETAIN); POA tpoa = rootPOA.create_POA("MyTransientPOA", null, tpolicy); String ObjectId = "MyObjectId"; byte[] oid = ObjectId.getBytes(); org.omg.CORBA.Object obj = tpoa.create_reference_with_id(oid, new _HelloImpl_Tie()._all_interfaces(tpoa, oid)[0]); HelloInterface helloRef = (HelloInterface)PortableRemoteObject.narrow( obj, HelloInterface.class ); Context initialNamingContext = new InitialContext(); initialNamingContext.rebind("HelloService", helloRef); System.out.println("Hello Server: Ready..."); orb.run(); } catch (Exception e) { System.out.println("Trouble: " + e); e.printStackTrace(); } } public static void main(String args[]) { new HelloServer( args ); } }
- 導入されたバージョン:
- 1.4
-
インタフェースのサマリー インタフェース 説明 AdapterActivator アダプタ・アクティベータは、子POA (POAの子供のどれか)の名前を指定する要求を受信したときの副作用として、またはactivateパラメータ値をTRUEに設定してfind_POAを呼び出したときに、POAが必要に応じて子POAを作成できるようにします。AdapterActivatorOperations アダプタ・アクティベータは、子POA (POAの子供のどれか)の名前を指定する要求を受信したときの副作用として、またはactivateパラメータ値をTRUEに設定してfind_POAを呼び出したときに、POAが必要に応じて子POAを作成できるようにします。Current PortableServer::Currentインタフェースは、CORBA::Currentから派生し、メソッドの各実装でそのメソッド呼出しの対象となるオブジェクトのIDにアクセスできるようにします。CurrentOperations PortableServer::Currentインタフェースは、CORBA::Currentから派生し、メソッドの各実装でそのメソッド呼出しの対象となるオブジェクトのIDにアクセスできるようにします。ID_ASSIGNMENT_POLICY_ID org/omg/PortableServer/ID_ASSIGNMENT_POLICY_ID.java。ID_UNIQUENESS_POLICY_ID org/omg/PortableServer/ID_UNIQUENESS_POLICY_ID.java。IdAssignmentPolicy IdAssignmentPolicyは、作成されたPOAのオブジェクトIDがアプリケーションまたはORBのどちらによって生成されるのかを指定します。IdAssignmentPolicyOperations IdAssignmentPolicyは、作成されたPOAのオブジェクトIDがアプリケーションまたはORBのどちらによって生成されるのかを指定します。IdUniquenessPolicy IdUniquenessPolicyは、作成されたPOAで起動されるサーバントに、一意のオブジェクトIDが必要かどうかを示します。IdUniquenessPolicyOperations IdUniquenessPolicyは、作成されたPOAで起動されるサーバントに、一意のオブジェクトIDが必要かどうかを示します。IMPLICIT_ACTIVATION_POLICY_ID org/omg/PortableServer/IMPLICIT_ACTIVATION_POLICY_ID.java。ImplicitActivationPolicy このポリシーは、作成済みのPOAでサーバントの暗黙的な起動がサポートされるかどうかを指定します。ImplicitActivationPolicyOperations このポリシーは、作成済みのPOAでサーバントの暗黙的な起動がサポートされるかどうかを指定します。LIFESPAN_POLICY_ID org/omg/PortableServer/LIFESPAN_POLICY_ID.java。LifespanPolicy LifespanPolicyは、作成されたPOAで実装されたオブジェクトの有効期間を示します。LifespanPolicyOperations LifespanPolicyは、作成されたPOAで実装されたオブジェクトの有効期間を示します。POA POAオブジェクトは、オブジェクトのコレクションの実装を管理します。POAManager 各POAオブジェクトには、POAManagerオブジェクトが関連付けられています。POAManagerOperations 各POAオブジェクトには、POAManagerオブジェクトが関連付けられています。POAOperations POAオブジェクトは、オブジェクトのコレクションの実装を管理します。REQUEST_PROCESSING_POLICY_ID org/omg/PortableServer/REQUEST_PROCESSING_POLICY_ID.java。RequestProcessingPolicy このポリシーは、作成されたPOAがどのように要求を処理するかを示します。RequestProcessingPolicyOperations このポリシーは、作成されたPOAがどのように要求を処理するかを示します。SERVANT_RETENTION_POLICY_ID org/omg/PortableServer/SERVANT_RETENTION_POLICY_ID.java。ServantActivator POAにRETAINポリシーが指定されているときは、サーバント・マネージャとしてServantActivatorが使用されます。ServantActivatorOperations POAにRETAINポリシーが指定されているときは、サーバント・マネージャとしてServantActivatorが使用されます。ServantLocator POAにNON_RETAINポリシーが指定されているときは、サーバント・マネージャとしてServantLocatorが使用されます。ServantLocatorOperations POAにNON_RETAINポリシーが指定されているときは、サーバント・マネージャとしてServantLocatorが使用されます。ServantManager サーバント・マネージャは、POAが停止中のオブジェクトをターゲットとした要求を受信したときに、必要に応じてオブジェクトを起動できるようにします。ServantManagerOperations サーバント・マネージャは、POAが停止中のオブジェクトをターゲットとした要求を受信したときに、必要に応じてオブジェクトを起動できるようにします。ServantRetentionPolicy このポリシーは、作成されたPOAがアクティブなサーバントをActive Object Mapに保存するかどうかを示します。ServantRetentionPolicyOperations このポリシーは、作成されたPOAがアクティブなサーバントをActive Object Mapに保存するかどうかを示します。THREAD_POLICY_ID org/omg/PortableServer/THREAD_POLICY_ID.java。ThreadPolicy ThreadPolicyは、作成されたPOAで使用されるスレッド・モデルを示します。ThreadPolicyOperations ThreadPolicyは、作成されたPOAで使用されるスレッド・モデルを示します。 -
クラスのサマリー クラス 説明 _ServantActivatorStub POAにRETAINポリシーが指定されているときは、サーバント・マネージャとしてServantActivatorが使用されます。_ServantLocatorStub POAにNON_RETAINポリシーが指定されているときは、サーバント・マネージャとしてServantLocatorが使用されます。CurrentHelper PortableServer::Currentインタフェースは、CORBA::Currentから派生し、メソッドの各実装でそのメソッド呼出しの対象となるオブジェクトのIDにアクセスできるようにします。DynamicImplementation オブジェクト呼出しの動的な処理を可能にします。ForwardRequestHelper org/omg/PortableServer/ForwardRequestHelper.java。IdAssignmentPolicyValue IdAssignmentPolicyValueには、次の値を指定できます。IdUniquenessPolicyValue IdUniquenessPolicyValueには、次の値を指定できます。ImplicitActivationPolicyValue ImplicitActivationPolicyValueには、次のセマンティックスを指定できます。LifespanPolicyValue LifespanPolicyValueには、次の値を指定できます。POAHelper POAオブジェクトは、オブジェクトのコレクションの実装を管理します。RequestProcessingPolicyValue RequestProcessingPolicyValueには、次の値を指定できます。Servant ネイティブなServant
型を定義します。ServantActivatorHelper POAにRETAINポリシーが指定されているときは、サーバント・マネージャとしてServantActivatorが使用されます。ServantActivatorPOA POAにRETAINポリシーが指定されているときは、サーバント・マネージャとしてServantActivatorが使用されます。ServantLocatorHelper POAにNON_RETAINポリシーが指定されているときは、サーバント・マネージャとしてServantLocatorが使用されます。ServantLocatorPOA POAにNON_RETAINポリシーが指定されているときは、サーバント・マネージャとしてServantLocatorが使用されます。ServantRetentionPolicyValue ServantRetentionPolicyValueには、次の値を指定できます。ThreadPolicyValue ThreadPolicyValueには、次の値を指定できます。 -
例外のサマリー 例外 説明 ForwardRequest org/omg/PortableServer/ForwardRequest.java。