目次|前|次 | Java Remote Method Invocation |
RemoteCall
インタフェースRemoteCall
インタフェースは、リモート・オブジェクトのスタブとスケルトンがリモート・オブジェクトへの呼出しを実行するための抽象化です。
RemoteCall
インタフェースは非推奨です。1.2のスタブ・プロトコルは、このインタフェースを使いません。Java 2 SDK, Standard Edition, v1.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
メソッドは、出力ストリームを返します(呼出しが成功したかどうかを示すヘッダー情報を書き込んだあと)。結果ストリームを得ることができるのは、1回のリモート呼出しに対して1回だけです。successがtrue
であれば、転送のため整列化される結果は正常終了であり、それ以外の結果は例外になります。StreamCorruptedException
は、そのリモート呼出しに対しての結果ストリームがすでに得られている場合にスローされます。
executeCall
メソッドは、どのような値が与えられてもその値により呼出しを実行します。
done
メソッドは、リモート呼出しが完了したあとのクリーンアップを許可します。