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
プロパティを、インストールするセキュリティ・マネージャの名前に設定できます。
ActivationInstantiator
, ActivationGroupDesc
, ActivationGroupID
, 直列化された形式ref
修飾子 | コンストラクタと説明 |
---|---|
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が使う起動システムを設定します。
|
clone, exportObject, exportObject, exportObject, unexportObject
getClientHost, getLog, setLog
newInstance
protected ActivationGroup(ActivationGroupID groupID) throws RemoteException
java.rmi.server.UnicastRemoteObject
としてエクスポートされます。groupID
- グループの識別子RemoteException
- このグループをエクスポートできなかった場合UnsupportedOperationException
- この実装で起動がサポートされていない場合のみ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
- オブジェクトの起動識別子UnknownObjectException
- オブジェクトが不明の場合。すでに終了している場合もあるRemoteException
- 呼出し通知モニターが失敗した場合ActivationException
- グループが停止している場合public abstract void activeObject(ActivationID id, Remote obj) throws ActivationException, UnknownObjectException, RemoteException
activeObject
メソッドは、オブジェクトがエクスポートされるときに呼び出されます。エクスポートは、Activatable
オブジェクトの構築、あるいはActivatable.exportObject
の明示的な呼出しによって実行されます。オブジェクトが起動されていることをグループのActivationMonitor
に対してまだ通知していない場合、グループは、モニターのactiveObject
メソッドを使ってこれを通知する必要があります。id
- オブジェクトの識別子obj
- 実装されたリモート・オブジェクトUnknownObjectException
- オブジェクトが登録されていない場合RemoteException
- 呼出し通知モニターが失敗した場合ActivationException
- グループが停止している場合public static ActivationGroup createGroup(ActivationGroupID id, ActivationGroupDesc desc, long incarnation) throws ActivationException
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
- グループの生成番号(グループの初回作成時はゼロ)ActivationException
- グループがすでに存在する場合、あるいはグループの作成中にエラーが発生した場合SecurityException
- グループを作成するためのアクセス権が与えられなかった場合。(注: セキュリティ・マネージャのcheckSetFactory
メソッドのデフォルトの実装は、「setFactory」のRuntimePermissionを必要とする)UnsupportedOperationException
- この実装で起動がサポートされていない場合のみSecurityManager.checkSetFactory()
public static ActivationGroupID currentGroupID()
UnsupportedOperationException
- この実装で起動がサポートされていない場合のみpublic static void setSystem(ActivationSystem system) throws ActivationException
ActivationSystem
への参照を取得するために、getSystem
メソッドが、アクティベータのレジストリで名前「java.rmi.activation.ActivationSystem」を検索します。デフォルトでは、起動システムの検索に使用されるポート番号は、ActivationSystem.SYSTEM_PORT
で定義されています。このポートは、プロパティjava.rmi.activation.port
を設定することによりオーバーライドできます。
セキュリティ・マネージャが存在する場合、このメソッドは最初にセキュリティ・マネージャのcheckSetFactory
メソッドを呼び出します。この結果、SecurityExceptionがスローされることがあります。
system
- ActivationSystem
へのリモート参照ActivationException
- 起動システムがすでに設定されている場合SecurityException
- 起動システムを設定するためのアクセス権が与えられなかった場合。(注: セキュリティ・マネージャのcheckSetFactory
メソッドのデフォルトの実装は、「setFactory」のRuntimePermissionを必要とする)UnsupportedOperationException
- この実装で起動がサポートされていない場合のみgetSystem()
, SecurityManager.checkSetFactory()
public static ActivationSystem getSystem() throws ActivationException
setSystem
メソッドで設定できます。setSystem
メソッドで起動システムを設定できない場合は、ActivationSystem
への参照を取得するために、getSystem
メソッドがアクティベータのレジストリで名前「java.rmi.activation.ActivationSystem」を検索します。デフォルトでは、起動システムの検索に使用されるポート番号は、ActivationSystem.SYSTEM_PORT
で定義されています。このポートは、プロパティjava.rmi.activation.port
を設定することによりオーバーライドできます。ActivationException
- 起動システムが取得できないか、バインドされていない(停止中である)場合。UnsupportedOperationException
- この実装で起動がサポートされていない場合のみsetSystem(java.rmi.activation.ActivationSystem)
protected void activeObject(ActivationID id, MarshalledObject<? extends Remote> mobj) throws ActivationException, UnknownObjectException, RemoteException
activeObject
コールバックを行うために必要です。この呼出しは、グループのActivationMonitor
にすぐに転送されます。id
- オブジェクトの識別子mobj
- リモート・オブジェクトのスタブを含む、整列化されたオブジェクトUnknownObjectException
- オブジェクトが登録されていない場合RemoteException
- 呼出し通知モニターが失敗した場合ActivationException
- 起動エラーが発生した場合protected void inactiveGroup() throws UnknownGroupException, RemoteException
inactiveGroup
コールバックを行うために必要です。この呼出しは、グループのActivationMonitor
にすぐに転送されます。また、VMが使う現在のグループがnullに設定されます。UnknownGroupException
- グループが登録されていない場合RemoteException
- 呼出し通知モニターが失敗した場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.