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, unexportObjectgetClientHost, getLog, setLognewInstanceprotected 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, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。