JavaTM 2 Platform
Std. Ed. v1.3

java.rmi.activation
クラス ActivationGroup

java.lang.Object
  |
  +--java.rmi.server.RemoteObject
        |
        +--java.rmi.server.RemoteServer
              |
              +--java.rmi.server.UnicastRemoteObject
                    |
                    +--java.rmi.activation.ActivationGroup
すべての実装インタフェース:
ActivationInstantiator, Remote, Serializable

public abstract class ActivationGroup
extends UnicastRemoteObject
implements ActivationInstantiator

ActivationGroup は、グループ内の「起動可能な」オブジェクトの新しいインスタンスを生成し、グループの ActivationMonitor に対して、オブジェクトの起動や停止、あるいはグループ全体の停止を通知します。

ActivationGroup は最初、以下のどれかの方法で作成します。

アクティベータだけが、ActivationGroup を作成し直すことができます。必要に応じてアクティベータは、登録された起動グループごとに別個の VM を子プロセスなどとして生成し、起動要求を適切なグループにリダイレクトします。VM を生成する方法は、実装によって異なります。起動グループは、static メソッド ActivationGroup.createGroup を使って作成されます。createGroup メソッドでグループを作成する場合、次の 2 つの必要条件があります。1) グループは、ActivationGroup の具象サブクラスであること、2) グループには、以下の 2 つの引数をとるコンストラクタがあることです。

グループが作成されると、ActivationGroup のデフォルトの実装では、このグループの ActivationGroupDesc を作成したときに要求されたプロパティによりシステムのプロパティがオーバーライドされ、java.rmi.RMISecurityManager がデフォルトのシステムセキュリティマネージャとして設定されます。グループ内でオブジェクトが起動されるときに、特定のプロパティの設定を必要とするアプリケーションの場合、任意の ActivationDesc を作成する前 (デフォルトの ActivationDesc が作成される前) に、アプリケーションに必要なプロパティで構成される特別な Properties オブジェクトを作成します。そして、その Properties を設定して ActivationGroupDesc を作成してから、ActivationGroup.createGroup を使います。java.rmi.RMISecurityManager 以外のセキュリティマネージャが必要なアプリケーションの場合は、ActivativationGroupDescriptor プロパティリストで、java.security.manager プロパティをインストールするセキュリティマネージャの名前に設定できます。

導入されたバージョン:
1.2
関連項目:
ActivationInstantiator, ActivationGroupDesc, ActivationGroupID, 直列化された形式

クラス java.rmi.server.RemoteObject から継承したフィールド
ref
 
コンストラクタの概要
protected ActivationGroup(ActivationGroupID groupID)
          起動グループを UnicastRemoteObject として構築およびエクスポートし、クライアントが newInstance メソッドを呼び出せるようにします。
 
メソッドの概要
protected  void activeObject(ActivationID id, MarshalledObject 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
 

コンストラクタの詳細

ActivationGroup

protected ActivationGroup(ActivationGroupID groupID)
                   throws RemoteException
起動グループを UnicastRemoteObject として構築およびエクスポートし、クライアントが newInstance メソッドを呼び出せるようにします。
パラメータ:
groupID - グループの識別子
例外:
RemoteException - グループをエクスポートできない場合
導入されたバージョン:
1.2
メソッドの詳細

inactiveObject

public boolean inactiveObject(ActivationID id)
                       throws ActivationException,
                              UnknownObjectException,
                              RemoteException
グループの inactiveObject メソッドは、Activatable.inactive メソッドの呼び出しを通じて間接的に呼び出されます。リモートオブジェクトの実装では、オブジェクトが終了するとき、すなわち、オブジェクトが動作中でなくなるときに、Activatableinactive メソッドを呼び出す必要があります。オブジェクトが終了時に 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 コンストラクタを持っている必要があります。その引数は、ActivationGroupDesc から取得される、グループの ActivationGroupID と、グループの初期化データを含む MarshalledObject です。

ActivationGroupDesc で指定されたグループのクラス名が null の場合、このメソッドは、デフォルトの起動グループの実装クラス名に含まれるグループ記述子のように動作します。

注: 独自の起動グループを作成するアプリケーションの場合は、そのグループのセキュリティマネージャを設定する必要があります。そうしないと、グループ内でオブジェクトを起動できません。デフォルトでは java.rmi.RMISecurityManager がセキュリティマネージャとして設定されます。

セキュリティマネージャがグループ VM に設定されている場合、このメソッドは最初にセキュリティマネージャの checkSetFactory メソッドを呼び出します。これにより SecurityException となります。別のセキュリティマネージャを設定する必要のあるアプリケーションの場合、グループの ActivationGroupDesc で指定されたポリシーファイルで、新しいセキュリティマネージャを設定するために必要な許可をそのグループに与える必要があります (注: これは、グループがセキュリティマネージャをダウンロードおよび設定する場合に必要)。

グループが作成されると、ActivationSystem にグループが起動したことを通知するために activeGroup メソッドが呼び出され、このメソッドはグループの ActivationMonitor を返します。アプリケーションから activeGroup を個別に呼び出す必要はありません。なぜなら、この処理はこのメソッドにより行われるからです。

グループが作成されると、以後の currentGroupID メソッドへの呼び出しは、グループが終了するまではこのグループの識別子を返します。

パラメータ:
id - 起動グループの識別子
desc - 起動グループの記述子
incarnation - グループの生成番号。グループを最初に作成した時には 0
戻り値:
VM が使う起動グループ
例外:
ActivationException - グループがすでに存在する場合、あるいはグループの作成中にエラーが発生した場合
SecurityException - グループを作成する許可が与えられなかった場合。注: セキュリティマネージャの checkSetFactory メソッドのデフォルトの実装は、「setFactory」の RuntimePermission を必要とする
導入されたバージョン:
1.2
関連項目:
SecurityManager.checkSetFactory()

currentGroupID

public static ActivationGroupID currentGroupID()
現在の起動グループの識別子を返します。現在起動中のグループが VM にない場合は null を返します。
戻り値:
起動グループの識別子
導入されたバージョン:
1.2

setSystem

public static void setSystem(ActivationSystem system)
                      throws ActivationException
VM が使う起動システムを設定します。起動システムは、現在起動中のグループがない場合にだけ設定できます。起動システムをこの呼び出しで設定できない場合は、ActivationSystem への参照を取得するために、getSystem メソッドが、アクティベータのレジストリで名前「java.rmi.activation.ActivationSystem」を検索します。デフォルトでは、起動システムの検索に使用されるポート番号は、ActivationSystem.SYSTEM_PORT で定義されています。このポート定義は、プロパティ java.rmi.activation.port を設定することによりオーバーライドできます。

セキュリティマネージャが存在する場合、このメソッドは最初にセキュリティマネージャの checkSetFactory メソッドを呼び出します。その結果、SecurityException が発生する場合があります。

パラメータ:
system - ActivationSystem へのリモート参照
例外:
ActivationException - 起動システムがすでに設定されている場合
SecurityException - 起動システムを設定する許可が与えられなかった場合。注: セキュリティマネージャの checkSetFactory メソッドのデフォルトの実装は「setFactory」の RuntimePermission を必要とする
導入されたバージョン:
1.2
関連項目:
SecurityManager.checkSetFactory()

getSystem

public static ActivationSystem getSystem()
                                  throws ActivationException
VM が使う起動システムを返します。起動システムは、setSystem メソッドで設定できます。setSystem で起動システムを設定できない場合は、ActivationSystem への参照を取得するために、getSystem メソッドがアクティベータのレジストリで名前「java.rmi.activation.ActivationSystem」を検索します。デフォルトでは、起動システムの検索に使用されるポート番号は、ActivationSystem.SYSTEM_PORT で定義されています。このポート定義は、プロパティ java.rmi.activation.port を設定することによりオーバーライドできます。
戻り値:
VM またはグループが使う起動システム
例外:
ActivationException - 起動システムを取得できないか、バインドされていない場合。起動システムは停止中である
導入されたバージョン:
1.2

activeObject

protected void activeObject(ActivationID id,
                            MarshalledObject 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

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.