|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.rmi.server.RemoteObject java.rmi.server.RemoteServer java.rmi.server.UnicastRemoteObject java.rmi.activation.ActivationGroup
public abstract class ActivationGroup
ActivationGroup
は、グループ内の「起動可能な」オブジェクトの新しいインスタンスを生成し、グループの ActivationMonitor
に対して、オブジェクトの起動や停止、あるいはグループ全体の停止を通知します。
ActivationGroup
は最初、次のどれかの方法で作成します。
ActivationDesc
(明示的な ActivationGroupID
はない) を作成する
ActivationGroup.createGroup
メソッドを使用する
ActivationGroupDesc
の登録後、グループ内の最初のオブジェクトを起動する
アクティベータだけが、ActivationGroup
を作成し直すことができます。必要に応じてアクティベータは、登録された起動グループごとに別個の VM を子プロセスなどとして生成し、起動要求を適切なグループにリダイレクトします。VM を生成する方法は、実装によって異なります。起動グループは、static メソッド ActivationGroup.createGroup
により作成します。createGroup
メソッドでグループを作成する場合、次の 2 つの必要条件があります。1) グループは、ActivationGroup
の具象サブクラスであること、2) グループには、次の 2 つの引数をとるコンストラクタがあることです。
ActivationGroupID
java.rmi.MarshalledObject
内の) 初期化データ
グループが作成されると、ActivationGroup
のデフォルトの実装では、このグループの ActivationGroupDesc
を作成したときに要求されたプロパティーによりシステムのプロパティーがオーバーライドされ、java.rmi.RMISecurityManager
がデフォルトのシステムセキュリティーマネージャーとして設定されます。グループ内でオブジェクトが起動されるときに、特定のプロパティーの設定を必要とするアプリケーションの場合、任意の ActivationDesc
を作成する前 (デフォルトの ActivationDesc
が作成される前) に、アプリケーションに必要なプロパティーで構成される特別な Properties
オブジェクトを作成します。そして、その Properties
を設定して ActivationGroupDesc
を作成してから、ActivationGroup.createGroup
を使います。java.rmi.RMISecurityManager
以外のセキュリティーマネージャーが必要なアプリケーションの場合は、ActivativationGroupDescriptor プロパティーリストで、java.security.manager
プロパティーをインストールするセキュリティーマネージャーの名前に設定できます。
ActivationInstantiator
,
ActivationGroupDesc
,
ActivationGroupID
,
直列化された形式フィールドの概要 |
---|
クラス java.rmi.server.RemoteObject から継承されたフィールド |
---|
ref |
コンストラクタの概要 | |
---|---|
protected |
ActivationGroup(ActivationGroupID groupID)
指定された起動グループ識別子を持つ起動グループを構築します。 |
メソッドの概要 | |
---|---|
protected void |
activeObject(ActivationID id,
MarshalledObject<? extends Remote> mobj)
この protected メソッドは、サブクラスがグループのモニターに activeObject コールバックを行うために必要です。 |
abstract void |
activeObject(ActivationID id,
Remote obj)
グループの activeObject メソッドは、オブジェクトがエクスポートされるときに呼び出されます。 |
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, unexportObject |
クラス java.rmi.server.RemoteServer から継承されたメソッド |
---|
getClientHost, getLog, setLog |
クラス java.rmi.server.RemoteObject から継承されたメソッド |
---|
equals, getRef, hashCode, toString, toStub |
クラス java.lang.Object から継承されたメソッド |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
インタフェース java.rmi.activation.ActivationInstantiator から継承されたメソッド |
---|
newInstance |
コンストラクタの詳細 |
---|
protected 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 コンストラクタを持っている必要があります。その引数は、ActivationGroupDesc
から取得される、グループの ActivationGroupID
と、グループの初期化データを含む MarshalledObject
です。
ActivationGroupDesc
で指定されたグループのクラス名が null
の場合、このメソッドは、デフォルトの起動グループの実装クラス名に含まれるグループ記述子のように動作します。
注: 独自の起動グループを作成するアプリケーションの場合は、そのグループのセキュリティーマネージャーを設定する必要があります。そうしないと、グループ内でオブジェクトを起動できません。デフォルトでは java.rmi.RMISecurityManager
がセキュリティーマネージャーとして設定されます。
セキュリティーマネージャーがグループ VM に設定されている場合、このメソッドは最初にセキュリティーマネージャーの checkSetFactory
メソッドを呼び出します。この結果、SecurityException
になることがあります。別のセキュリティーマネージャーを設定する必要のあるアプリケーションの場合、グループの ActivationGroupDesc
で指定されたポリシーファイルで、新しいセキュリティーマネージャーを設定するために必要な許可をそのグループに与える必要があります(注: これは、グループがセキュリティーマネージャーをダウンロードおよび設定する場合に必要)。
グループが作成されると、ActivationSystem
にグループが起動したことを通知するために activeGroup
メソッドが呼び出され、このメソッドはグループの ActivationMonitor
を返します。アプリケーションから activeGroup
を個別に呼び出す必要はありません。なぜなら、この処理はこのメソッドにより行われるからです。
グループが作成されると、以後の currentGroupID
メソッドへの呼び出しは、グループが終了するまではこのグループの識別子を返します。
id
- 起動グループの識別子desc
- 起動グループの記述子incarnation
- グループの生成番号。グループを最初に作成した時には 0
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
- 呼び出し通知モニターが失敗した場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。