- すべての実装されたインタフェース:
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
, 直列化された形式
-
フィールドのサマリー
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
ActivationGroup(ActivationGroupID groupID)
指定された起動グループ識別子を持つ起動グループを構築します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 protected void
activeObject(ActivationID id, MarshalledObject<? extends Remote> mobj)
このprotectedメソッドは、サブクラスがグループのモニターにactiveObject
コールバックを行うために必要です。abstract void
activeObject(ActivationID id, Remote obj)
グループのactiveObject
メソッドは、オブジェクトがエクスポートされるときに呼び出されます。エクスポートは、Activatable
オブジェクトの構築、あるいはActivatable.exportObject
の明示的な呼出しによって実行されます。static ActivationGroup
createGroup(ActivationGroupID id, ActivationGroupDesc desc, long incarnation)
現在のVMで使う起動グループを作成および設定します。static ActivationGroupID
currentGroupID()
現在の起動グループの識別子を返します。static ActivationSystem
getSystem()
VMが使う起動システムを返します。protected void
inactiveGroup()
このprotectedメソッドは、サブクラスがグループのモニターにinactiveGroup
コールバックを行うために必要です。boolean
inactiveObject(ActivationID id)
グループのinactiveObject
メソッドは、Activatable.inactive
メソッドの呼出しを介して間接的に呼び出されます。static void
setSystem(ActivationSystem system)
VMが使う起動システムを設定します。クラス 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 ActivationExceptionVMが使う起動システムを設定します。 起動システムは、現在起動中のグループがない場合にだけ設定できます。 起動システムをこの呼出しで設定できない場合は、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 ActivationExceptionVMが使う起動システムを返します。 起動システムは、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
-