public interface Activator extends Remote
Activator
は、リモート・オブジェクトの起動を簡単にします。「フォルト」リモート参照は、アクティベータのactivate
メソッドを呼び出して、「起動可能な」リモート・オブジェクトへの「ライブ」参照を取得します。起動の要求を受け取ったアクティベータは、起動識別子id
の起動記述子を探してから、グループを決定します。そのグループでは、起動されるオブジェクトが、newInstance
メソッドの呼出しを通じてグループのActivationInstantiator
を使い、オブジェクトの再作成を開始します。必要であれば、アクティベータは起動グループの実行を開始します。たとえば、特定のグループ識別子の起動グループがまだ実行中でない場合は、アクティベータがそのグループのVMの実行を開始します。
Activator
は、グループとそのグループ内のオブジェクトを登録する方法を提供するActivationSystem
、および起動中あるいは停止中のオブジェクトと停止中のグループに関する情報を受け取るActivationMonitor
と密接に連携しながら動作します。
アクティベータは、起動グループが失敗した場合の監視および検出を行い、グループおよびそのグループ内の起動中のオブジェクトへの無効なリモート参照を削除できるようにします。
ActivationInstantiator
, ActivationGroupDesc
, ActivationGroupID
修飾子と型 | メソッドと説明 |
---|---|
MarshalledObject<? extends Remote> |
activate(ActivationID id, boolean force)
起動識別子
id に関連したオブジェクトを起動します。 |
MarshalledObject<? extends Remote> activate(ActivationID id, boolean force) throws ActivationException, UnknownObjectException, RemoteException
id
に関連したオブジェクトを起動します。そのオブジェクトが起動していることをアクティベータが認識していて、force
の値がfalseの場合は、「ライブ」参照のスタブが即座に呼出し元に返されます。それ以外の場合で、対応するリモート・オブジェクトが起動していることをアクティベータが認識していなければ、アクティベータは以前に登録された起動記述子の情報を使って、オブジェクトが起動される場所となるグループ(VM)を決定します。オブジェクトのグループ記述子に対応するActivationInstantiator
がすでに存在する場合、アクティベータは起動グループのnewInstance
を呼び出し、それにオブジェクトのIDおよび記述子を渡します。
オブジェクトのグループ記述子が使う起動グループがまだ存在しない場合、アクティベータは、子プロセスの生成などにより、ActivationInstantiator
の実行を開始します。アクティベータは、ActivationSystem
のactiveGroup
メソッドにより起動グループの参照が含まれる起動グループのコールバックを受け取ると、その起動インスタンシエータのnewInstance
メソッドを呼び出して、保留状態になっている各起動要求を起動グループに転送し、結果(整列化されたリモート・オブジェクト参照、つまりスタブ)を呼出し側に返すことができます。
アクティベータはリモート・オブジェクトではなく「整列化された」オブジェクトを受け取るので、そのオブジェクトのコードをロードする必要はなく、オブジェクトの分散ガベージ・コレクションに関与する必要もありません。リモート・オブジェクトへの強い参照を保持していれば、通常の分散ガベージ・コレクション・メカニズムの下では、アクティベータはリモート・オブジェクトがガベージ・コレクトされるのを防ぐことができます。
id
- 起動されるオブジェクトの起動識別子force
- trueの場合、アクティベータはグループに接続してリモート・オブジェクトの参照を取得する。それ以外の場合は、キャッシュされた値を戻り値として使用できる。ActivationException
- オブジェクトの起動に失敗した場合UnknownObjectException
- オブジェクトが不明な(登録されていない)場合RemoteException
- リモート呼出しが失敗した場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.