パッケージ 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関連のインタフェースを定義します。
POAPOAManagerServantManagerServantActivatorServantLocatorAdapterActivatorThreadPolicyLifespanPolicyIdUniquenessPolicyIdAssignmentPolicyImplicitActivationPolicyServantRetentionPolicyRequestProcessingPolicyCurrent
また、POAはServantネイティブ型も定義します。
オペレーション・クラス
上記の各インタフェースには、Operationsインタフェースが関連付けられています。 Operationsインタフェースは、idljコンパイラによって生成され、それに関連付けられたインタフェースに定義されているメソッドのメソッド・シグニチャを格納します。 Operationsインタフェースはクライアントとサーバーの両方からアクセスできますが、それに関連付けられたインタフェースはクライアントからしか呼び出せません。
値クラス
接尾辞PolicyValueで終わるクラスは、POAのポリシーを設定するcreate_POA呼出しに使用される値を提供します。 デモンストレーションについては、次のコード例を参照してください。 PolicyValueファイルには、次のものがあります。
IdAssignmentPolicyValueIdUniquenessPolicyValueImplicitActivationPolicyValueLifespanPolicyValueRequestProcessingPolicyValueServantRetentionPolicyValueThreadPolicyValue
ヘルパー・クラス
OMG IDLインタフェースのすべてのユーザー定義型で生成されるヘルパー・クラスは、ユーザー定義型の操作に必要なstaticメソッドを提供します。 ヘルパー・クラスには、アプリケーション・プログラマが使用するメソッドが1つだけあります(narrowメソッド)。 IDLインタフェースからマップされるJavaインタフェースのみが、narrowメソッドを含むヘルパー・クラスを備えています。したがって、PortableServerパッケージでは、次のクラスにのみnarrowメソッドがあります。
ForwardRequestHelperServantActivatorHelperServantLocatorHelper
POAクラス
POAクラスは、ServantActivatorまたはServantLocatorの実装に使用します。
例外
ForwardRequest例外は、現在のリクエストと後続のForwardRequestリクエストをその例外のforward_referenceメンバーに示されたオブジェクトに配信する責任があることをORBに通知します。
アプリケーション・プログラマによって実装されるインタフェース
PortableServerによって行われる処理のほとんどは、ユーザーには見えません。 このため、上記のインタフェースのうちでプログラマが使用するものはほんのわずかです。 残りのインタフェースは、ORB実装によって提供されます。 アプリケーション・プログラマが使用するインタフェースは、次のとおりです。
AdapterActivatorアダプタ・アクティベータはPOAと関連付けられます。 アダプタ・アクティベータは、子POA (POAの子供のどれか)の名前を指定する要求を受信したときの副作用として、またはactivateパラメータ値を
TRUEに設定してfind_POAを呼び出したときに、POAが必要に応じて子POAを作成できるようにします。 実行の初めで必要なPOAをすべて作成するアプリケーション・サーバーでは、アダプタ・アクティベータを使用する必要も用意する必要もありません。つまり、要求の処理時にPOAを作成する必要がある場合にのみアダプタ・アクティベータが必要になります。ServantLocatorNON_RETAINポリシーを持つPOAは、ServantLocatorであるサーバント・マネージャを使用します。ServantActivatorRETAINポリシーを持つ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。