目次 | 前の項目 | 次の項目 Java Remote Method Invocation


8.2 RemoteCall インタフェース

RemoteCall インタフェースは、リモートオブジェクトのスタブとスケルトンがリモートオブジェクトへの呼び出しを実行するための抽象化です。


注 - JDK 1.2 では、RemoteCall インタフェースの使用は推奨されていません。JDK 1.2 のスタブプロトコルは、このインタフェースを使いません。JDK 1.2 では、スタブは、パラメータとして RemoteCall を必要としない新しい invoke メソッドを使います。
package java.rmi.server;
import java.io.*;

public interface RemoteCall {
	ObjectOutput getOutputStream() throws IOException;
	void releaseOutputStream() throws IOException;
	ObjectInput getInputStream() throws IOException;
	void releaseInputStream() throws IOException;
	ObjectOutput getResultStream(boolean success)
		throws IOException, StreamCorruptedException;
	void executeCall() throws Exception;
	void done() throws IOException;
}


getOutputStream メソッドは、出力ストリームを返します。スタブは引数を整列化してその出力ストリームに送り出し、スケルトンはそこから結果を分解して取り出します。

releaseOutputStream メソッドは、出力ストリームを開放します。トランスポートによっては、このメソッドはストリーム自体を開放します。

getInputStream メソッドは、InputStream の結果を返します。スタブはそこから結果を分解して取り出すか、スケルトンはパラメータを分解して取り出します。

releaseInputStream メソッドは、入力ストリームを開放します。この結果いくつかのトランスポートは、接続の入力側を早期に開放することができます。

getResultStream メソッドは、出力ストリームを返します (呼び出しが成功したかどうかを示すヘッダ情報を書き込んだあと)。結果ストリームを得ることができるのは、一回のリモート呼び出しに対して一回だけです。success が true であれば、転送のため整列化される結果は正常終了であり、それ以外の結果は例外になります。StreamCorruptedException は、そのリモート呼び出しに対しての結果ストリームがすでに得られている場合にスローされます。

executeCall メソッドは、どのような値が与えられてもその値により呼び出しを実行します。

done メソッドは、リモート呼び出しが完了したあとのクリーンアップを許可します。



目次 | 前の項目 | 次の項目
Copyright © 1997-1998 Sun Microsystems, Inc. All Rights Reserved.