- java.lang.Object
-
- java.rmi.server.RemoteObject
-
- java.rmi.server.RemoteServer
-
- java.rmi.server.UnicastRemoteObject
-
- java.rmi.activation.ActivationGroup
-
- すべての実装されたインタフェース:
Serializable,ActivationInstantiator,Remote
public abstract class ActivationGroup extends UnicastRemoteObject implements ActivationInstantiator
ActivationGroupは、グループ内の「起動可能な」オブジェクトの新しいインスタンスを生成し、グループのActivationMonitorに対して、オブジェクトの起動や停止、あるいはグループ全体の停止を通知します。ActivationGroupは最初、次のどれかの方法で作成します。- グループ内の最初の起動可能なオブジェクト用に
ActivationDesc(明示的なActivationGroupIDなし)を作成した副作用として ActivationGroup.createGroupメソッドを使用ActivationGroupDescの登録のみが行われているグループ内の最初のオブジェクトを起動した副作用として
アクティベータだけが、
ActivationGroupを作成し直すことができます。 必要に応じてアクティベータは、登録された起動グループごとに別個のVMを子プロセスなどとして生成し、起動要求を適切なグループにリダイレクトします。 VMを生成する方法は、実装によって異なります。 起動グループは、staticメソッドActivationGroup.createGroupにより作成します。createGroupメソッドには、作成するグループに関して、1)グループはActivationGroupの具象サブクラスでなければならない、2)グループは次の2つの引数をとるコンストラクタを持っていなければならない、という決まりがあります。- グループの
ActivationGroupID - グループの初期化データ(
java.rmi.MarshalledObject内)
グループが作成されると、
ActivationGroupのデフォルトの実装では、このグループのActivationGroupDescを作成したときに要求されたプロパティによりシステムのプロパティがオーバーライドされ、SecurityManagerがデフォルトのシステム・セキュリティ・マネージャとして設定されます。 グループ内でオブジェクトが起動されるときに特定のプロパティの設定を必要とするアプリケーションの場合は、ActivationDescを作成する前(デフォルトのActivationGroupDescが作成される前)に、これらのプロパティを含む特別なPropertiesオブジェクトを作成し、次にそのPropertiesオブジェクトでActivationGroupDescを作成してから、ActivationGroup.createGroupを使用するようにしてください。SecurityManager以外のセキュリティ・マネージャの使用を必要とするアプリケーションの場合は、ActivativationGroupDescriptorプロパティ・リストで、java.security.managerプロパティを、インストールするセキュリティ・マネージャの名前に設定できます。- 導入されたバージョン:
- 1.2
- 関連項目:
ActivationInstantiator,ActivationGroupDesc,ActivationGroupID, 直列化された形式
-
-
フィールドのサマリー
-
クラス java.rmi.server.RemoteObjectで宣言されたフィールド
ref
-
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protectedActivationGroup(ActivationGroupID groupID)指定された起動グループ識別子を持つ起動グループを構築します。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 修飾子と型 メソッド 説明 protected voidactiveObject(ActivationID id, MarshalledObject<? extends Remote> mobj)このprotectedメソッドは、サブクラスがグループのモニターにactiveObjectコールバックを行うために必要です。abstract voidactiveObject(ActivationID id, Remote obj)グループのactiveObjectメソッドは、オブジェクトがエクスポートされるときに呼び出されます。エクスポートは、Activatableオブジェクトの構築、あるいはActivatable.exportObjectの明示的な呼出しによって実行されます。static ActivationGroupcreateGroup(ActivationGroupID id, ActivationGroupDesc desc, long incarnation)現在のVMで使う起動グループを作成および設定します。static ActivationGroupIDcurrentGroupID()現在の起動グループの識別子を返します。static ActivationSystemgetSystem()VMが使う起動システムを返します。protected voidinactiveGroup()このprotectedメソッドは、サブクラスがグループのモニターにinactiveGroupコールバックを行うために必要です。booleaninactiveObject(ActivationID id)グループのinactiveObjectメソッドは、Activatable.inactiveメソッドの呼出しを介して間接的に呼び出されます。static voidsetSystem(ActivationSystem system)VMが使う起動システムを設定します。-
インタフェース java.rmi.activation.ActivationInstantiatorで宣言されたメソッド
newInstance
-
クラス java.rmi.server.RemoteServerで宣言されたメソッド
getClientHost, getLog, setLog
-
クラス java.rmi.server.UnicastRemoteObjectで宣言されたメソッド
clone, exportObject, exportObject, exportObject, exportObject, exportObject, unexportObject
-
-
-
-
コンストラクタの詳細
-
ActivationGroup
protected ActivationGroup(ActivationGroupID groupID) throws RemoteException
指定された起動グループ識別子を持つ起動グループを構築します。 このグループはjava.rmi.server.UnicastRemoteObjectとしてエクスポートされます。- パラメータ:
groupID- グループの識別子- 例外:
RemoteException- このグループをエクスポートできなかった場合UnsupportedOperationException- この実装で起動がサポートされていない場合のみ- 導入されたバージョン:
- 1.2
-
-
メソッドの詳細
-
inactiveObject
public boolean inactiveObject(ActivationID id) throws ActivationException, UnknownObjectException, RemoteException
グループのinactiveObjectメソッドは、Activatable.inactiveメソッドの呼出しを介して間接的に呼び出されます。 リモート・オブジェクトの実装では、そのオブジェクトがアクティブでなくなったとき(アクティブでなくなったと見なされるとき)にActivatableのinactiveメソッドを呼び出さなければなりません。 オブジェクトが終了時にActivatable.inactiveを呼び出さないと、グループは自身が作成したオブジェクトへの強参照を保持するので、オブジェクトは決してガベージ・コレクトされません。グループの
inactiveObjectメソッドは、リモート・オブジェクトをRMIランタイムからアンエクスポートして、そのオブジェクトが着信するRMI呼出しに応じられないようにします。 オブジェクトのアンエクスポートは、保留中あるいは実行中の呼出しをオブジェクトが持っていない場合にだけ可能です。ActivationGroupのサブクラスは、このメソッドをオーバーライドしてオブジェクトをアンエクスポートする必要があります。RMIランタイムからオブジェクトを削除後、グループはその
ActivationMonitorに、モニターのinactiveObjectメソッドを通じて、リモート・オブジェクトが起動中でないことを通知する必要があります。これにより、以後の起動要求のときに、アクティベータによってリモート・オブジェクトがふたたび起動されます。このメソッドは、グループのモニターにオブジェクトが終了していることを通知するだけです。 オブジェクトのアンエクスポートに必要なその他の条件を満足するかどうかは、ActivationGroupの具象サブクラスによります。
- パラメータ:
id- オブジェクトの起動識別子- 戻り値:
- オブジェクトが正常に終了した場合はtrue、そうでない場合はfalse
- 例外:
UnknownObjectException- オブジェクトが不明の場合。すでに終了している場合もあるRemoteException- 呼出し通知モニターが失敗した場合ActivationException- グループが停止している場合- 導入されたバージョン:
- 1.2
-
activeObject
public abstract void activeObject(ActivationID id, Remote obj) throws ActivationException, UnknownObjectException, RemoteException
グループのactiveObjectメソッドは、オブジェクトがエクスポートされるときに呼び出されます。エクスポートは、Activatableオブジェクトの構築、あるいはActivatable.exportObjectの明示的な呼出しによって実行されます。 オブジェクトが起動されていることをグループのActivationMonitorに対してまだ通知していない場合、グループは、モニターのactiveObjectメソッドを使ってこれを通知する必要があります。- パラメータ:
id- オブジェクトの識別子obj- 実装されたリモート・オブジェクト- 例外:
UnknownObjectException- オブジェクトが登録されていない場合RemoteException- 呼出し通知モニターが失敗した場合ActivationException- グループが停止している場合- 導入されたバージョン:
- 1.2
-
createGroup
public static ActivationGroup createGroup(ActivationGroupID id, ActivationGroupDesc desc, long incarnation) throws ActivationException
現在のVMで使う起動グループを作成および設定します。 起動グループを設定できるのは、それが現在設定されていない場合だけです。 起動グループがcreateGroupメソッドを使用して設定されるのは、着信するactivate要求を実行するために、Activatorが起動グループの再作成を開始したときです。 グループをこのメソッドで作成する前に、それをActivationSystemに登録しておく必要があります。ActivationGroupDescで指定されたグループのクラスは、ActivationGroupの具象サブクラスであり、また、2つの引数をとるpublicコンストラクタを持っている必要があります。その引数は、グループのActivationGroupIDと、そのグループの初期化データを含むMarshalledObject(ActivationGroupDescから取得)です。ActivationGroupDescで指定されたグループのクラス名がnullの場合、このメソッドは、グループ記述子にデフォルトの起動グループ実装クラスの名前が格納されているかのように動作します。注: 独自の起動グループを作成するアプリケーションの場合は、そのグループのセキュリティ・マネージャを設定する必要があります。 そうしないと、グループ内でオブジェクトを起動できません。 デフォルトでは
SecurityManagerがセキュリティ・マネージャとして設定されます。セキュリティ・マネージャがグループVMに設定されている場合、このメソッドは最初にセキュリティ・マネージャの
checkSetFactoryメソッドを呼び出します。 この結果、SecurityExceptionになることがあります。 別のセキュリティ・マネージャを設定する必要のあるアプリケーションの場合、グループのActivationGroupDescで指定されたポリシー・ファイルで、新しいセキュリティ・マネージャを設定するために必要なアクセス権をそのグループに与える必要があります (注: これは、グループがセキュリティ・マネージャをダウンロードおよび設定する場合に必要)。グループが作成されると、
ActivationSystemにグループが起動したことを通知するためにactiveGroupメソッドが呼び出され、このメソッドはグループのActivationMonitorを返します。 アプリケーションからactiveGroupを個別に呼び出す必要はありません。なぜなら、この処理はこのメソッドにより行われるからです。グループが作成されると、以後の
currentGroupIDメソッドへの呼出しは、グループが終了するまではこのグループの識別子を返します。- パラメータ:
id- 起動グループの識別子desc- 起動グループの記述子incarnation- グループの生成番号(グループの初回作成時はゼロ)- 戻り値:
- VMが使う起動グループ
- 例外:
ActivationException- グループがすでに存在する場合、あるいはグループの作成中にエラーが発生した場合SecurityException- グループを作成するためのアクセス権が与えられなかった場合。 (注: セキュリティ・マネージャのcheckSetFactoryメソッドのデフォルトの実装は、「setFactory」のRuntimePermissionを必要とする)UnsupportedOperationException- この実装で起動がサポートされていない場合のみ- 導入されたバージョン:
- 1.2
- 関連項目:
SecurityManager.checkSetFactory()
-
currentGroupID
public static ActivationGroupID currentGroupID()
現在の起動グループの識別子を返します。 現在起動中のグループがVMにない場合はnullを返します。- 戻り値:
- 起動グループの識別子
- 例外:
UnsupportedOperationException- この実装で起動がサポートされていない場合のみ- 導入されたバージョン:
- 1.2
-
setSystem
public static void setSystem(ActivationSystem system) throws ActivationException
VMが使う起動システムを設定します。 起動システムは、現在起動中のグループがない場合にだけ設定できます。 起動システムをこの呼出しで設定できない場合は、ActivationSystemへの参照を取得するために、getSystemメソッドが、アクティベータのレジストリで名前「java.rmi.activation.ActivationSystem」を検索します。 デフォルトでは、起動システムの検索に使用されるポート番号は、ActivationSystem.SYSTEM_PORTで定義されています。 このポートは、プロパティjava.rmi.activation.portを設定することによりオーバーライドできます。セキュリティ・マネージャが存在する場合、このメソッドは最初にセキュリティ・マネージャの
checkSetFactoryメソッドを呼び出します。 この結果、SecurityExceptionがスローされることがあります。- パラメータ:
system-ActivationSystemへのリモート参照- 例外:
ActivationException- 起動システムがすでに設定されている場合SecurityException- 起動システムを設定するためのアクセス権が与えられなかった場合。 (注: セキュリティ・マネージャのcheckSetFactoryメソッドのデフォルトの実装は、「setFactory」のRuntimePermissionを必要とする)UnsupportedOperationException- この実装で起動がサポートされていない場合のみ- 導入されたバージョン:
- 1.2
- 関連項目:
getSystem(),SecurityManager.checkSetFactory()
-
getSystem
public static ActivationSystem getSystem() throws ActivationException
VMが使う起動システムを返します。 起動システムは、setSystemメソッドで設定できます。setSystemメソッドで起動システムを設定できない場合は、ActivationSystemへの参照を取得するために、getSystemメソッドがアクティベータのレジストリで名前「java.rmi.activation.ActivationSystem」を検索します。 デフォルトでは、起動システムの検索に使用されるポート番号は、ActivationSystem.SYSTEM_PORTで定義されています。 このポートは、プロパティjava.rmi.activation.portを設定することによりオーバーライドできます。- 戻り値:
- VMまたはグループが使う起動システム
- 例外:
ActivationException- 起動システムが取得できないか、バインドされていない(停止中である)場合。UnsupportedOperationException- この実装で起動がサポートされていない場合のみ- 導入されたバージョン:
- 1.2
- 関連項目:
setSystem(java.rmi.activation.ActivationSystem)
-
activeObject
protected void activeObject(ActivationID id, MarshalledObject<? extends Remote> mobj) throws ActivationException, UnknownObjectException, RemoteException
このprotectedメソッドは、サブクラスがグループのモニターにactiveObjectコールバックを行うために必要です。 この呼出しは、グループのActivationMonitorにすぐに転送されます。- パラメータ:
id- オブジェクトの識別子mobj- リモート・オブジェクトのスタブを含む、整列化されたオブジェクト- 例外:
UnknownObjectException- オブジェクトが登録されていない場合RemoteException- 呼出し通知モニターが失敗した場合ActivationException- 起動エラーが発生した場合- 導入されたバージョン:
- 1.2
-
inactiveGroup
protected void inactiveGroup() throws UnknownGroupException, RemoteExceptionこのprotectedメソッドは、サブクラスがグループのモニターにinactiveGroupコールバックを行うために必要です。 この呼出しは、グループのActivationMonitorにすぐに転送されます。 また、VMが使う現在のグループがnullに設定されます。- 例外:
UnknownGroupException- グループが登録されていない場合RemoteException- 呼出し通知モニターが失敗した場合- 導入されたバージョン:
- 1.2
-
-