モジュール java.rmi
パッケージ java.rmi.activation

クラスActivationGroup

すべての実装されたインタフェース:
Serializable, ActivationInstantiator, Remote

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プロパティを、インストールするセキュリティ・マネージャの名前に設定できます。

導入されたバージョン:
1.2
関連項目:
ActivationInstantiator, ActivationGroupDesc, ActivationGroupID, 直列化された形式
  • コンストラクタの詳細

    • ActivationGroup

      protected ActivationGroup​(ActivationGroupID groupID) throws RemoteException
      指定された起動グループ識別子を持つ起動グループを構築します。 このグループはjava.rmi.server.UnicastRemoteObjectとしてエクスポートされます。
      パラメータ:
      groupID - グループの識別子
      例外:
      RemoteException - このグループをエクスポートできなかった場合
      UnsupportedOperationException - この実装で起動がサポートされていない場合のみ
      導入されたバージョン:
      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コンストラクタを持っている必要があります。その引数は、グループのActivationGroupIDと、そのグループの初期化データを含むMarshalledObject (ActivationGroupDescから取得)です。

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

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

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

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

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

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

      public static ActivationGroupID currentGroupID()
      現在の起動グループの識別子を返します。 現在起動中のグループがVMにない場合はnullを返します。
      戻り値:
      起動グループの識別子
      例外:
      UnsupportedOperationException - この実装で起動がサポートされていない場合のみ
      導入されたバージョン:
      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を必要とする)
      UnsupportedOperationException - この実装で起動がサポートされていない場合のみ
      導入されたバージョン:
      1.2
      関連項目:
      getSystem(), 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 - 起動システムが取得できないか、バインドされていない(停止中である)場合。
      UnsupportedOperationException - この実装で起動がサポートされていない場合のみ
      導入されたバージョン:
      1.2
      関連項目:
      setSystem(java.rmi.activation.ActivationSystem)
    • activeObject

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