目次 | 前へ | 次へ Java Remote Method Invocation


7.2 起動プロトコル

リモートメソッドの呼び出しの際に、対象となるオブジェクトの「ライブ」参照がわからない場合は、フォルト参照は起動プロトコルを利用します。起動プロトコルは、いくつかのエンティティーとかかわります。このエンティティーは、フォルト参照、アクティベータ起動グループ、および起動されているリモートオブジェクトです。

アクティベータ (通常、ホストごとに 1 つ) は、起動を管理するエンティティーで、次の 2 つの役割を持ちます。

アクティベータは、現在の起動識別子とアクティブなオブジェクトとのマッピング情報をキャッシュとして保持しているので、起動要求のたびに起動グループに問い合わせをする必要はありません。

JVM ごとに 1 つだけ存在する起動グループは、JVM 内のオブジェクトの起動要求を受け取り、起動されたオブジェクトをアクティベータに返すエンティティーです。

起動プロトコルは、次のような働きをします。まず、フォルト参照は起動識別子を使用してアクティベータ (内部 RMI インタフェース) を呼び出し、起動識別子に関連付けられたオブジェクトを起動します。次に、アクティベータはオブジェクトの起動記述子 (前に登録したもの) を参照します。オブジェクトの記述子には、次の情報が含まれます。

該当するオブジェクトが属すべき起動グループが存在する場合は、アクティベータは起動要求をそのグループに転送します。そのような起動グループが存在しない場合は、JVM に起動グループを起動させ、その起動グループに起動要求を転送します。

起動グループは、該当するオブジェクトのクラスをロードし、いくつかの引数 (前に登録した起動記述子など) をとる特別なコンストラクタを使ってオブジェクトのインスタンスを生成します。

オブジェクトの起動が完了すると、起動グループは整列化されたオブジェクトの参照をアクティベータに返し、それを受け取ったアクティベータは、起動識別子とアクティブな参照のペアを記録して、アクティブな (ライブ) 参照をフォルト参照に返します。次に、フォルト参照 (スタブ内) は、リモートオブジェクトへの直接のライブ参照を介してメソッド呼び出しを転送します。


注 - Java 2 SDK, Standard Edition, v 1.2 の RMI では、起動システムインタフェースの実装が用意されています。起動を使用するには、事前に起動システムデーモン rmid を動作させておく必要があります。


目次 | 前へ | 次へ
Copyright 1997, 2010, Oracle and/or its affiliates. All rights reserved.