目次|| 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.