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 を作成したときに要求されたプロパティーによりシステムのプロパティーがオーバーライドされ、java.rmi.RMISecurityManager がデフォルトのシステムセキュリティーマネージャーとして設定されます。グループ内でオブジェクトが起動されるときに特定のプロパティーの設定を必要とするアプリケーションの場合は、ActivationDesc を作成する前 (デフォルトの ActivationGroupDesc が作成される前) に、これらのプロパティーを含む特別な Properties オブジェクトを作成し、次にその Properties オブジェクトで ActivationGroupDesc を作成してから、ActivationGroup.createGroup を使用するようにしてください。java.rmi.RMISecurityManager 以外のセキュリティーマネージャーの使用を必要とするアプリケーションの場合は、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, unexportObjectgetClientHost, getLog, setLognewInstanceprotected ActivationGroup(ActivationGroupID groupID) throws RemoteException
java.rmi.server.UnicastRemoteObject としてエクスポートされます。groupID - グループの識別子RemoteException - このグループをエクスポートできなかった場合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 の場合、このメソッドは、グループ記述子にデフォルトの起動グループ実装クラスの名前が格納されているかのように動作します。
注: 独自の起動グループを作成するアプリケーションの場合は、そのグループのセキュリティーマネージャーを設定する必要があります。そうしないと、グループ内でオブジェクトを起動できません。デフォルトでは java.rmi.RMISecurityManager がセキュリティーマネージャーとして設定されます。
セキュリティーマネージャーがグループ VM に設定されている場合、このメソッドは最初にセキュリティーマネージャーの checkSetFactory メソッドを呼び出します。この結果、SecurityException になることがあります。別のセキュリティーマネージャーを設定する必要のあるアプリケーションの場合、グループの ActivationGroupDesc で指定されたポリシーファイルで、新しいセキュリティーマネージャーを設定するために必要なアクセス権をそのグループに与える必要があります(注: これは、グループがセキュリティーマネージャーをダウンロードおよび設定する場合に必要)。
グループが作成されると、ActivationSystem にグループが起動したことを通知するために activeGroup メソッドが呼び出され、このメソッドはグループの ActivationMonitor を返します。アプリケーションから activeGroup を個別に呼び出す必要はありません。なぜなら、この処理はこのメソッドにより行われるからです。
グループが作成されると、以後の currentGroupID メソッドへの呼び出しは、グループが終了するまではこのグループの識別子を返します。
id - 起動グループの識別子desc - 起動グループの記述子incarnation - グループの生成番号 (グループの初回作成時はゼロ)ActivationException - グループがすでに存在する場合、あるいはグループの作成中にエラーが発生した場合SecurityException - グループを作成するためのアクセス権が与えられなかった場合。(注:セキュリティーマネージャーの checkSetFactory メソッドのデフォルトの実装は、「setFactory」の RuntimePermission を必要とする)SecurityManager.checkSetFactory()public static ActivationGroupID currentGroupID()
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 を必要とする)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 - 起動システムが取得できないか、バインドされていない (停止中である) 場合。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, 2013, Oracle and/or its affiliates. All rights reserved.