public class RemoteObjectInvocationHandler extends RemoteObject implements InvocationHandler
InvocationHandler インタフェースの実装です。この呼び出しハンドラは、動的プロキシインスタンスと組み合わせて、事前生成されたスタブクラスの代わりとして使用できます。
アプリケーションがこのクラスを直接使用することは想定されていません。UnicastRemoteObject または Activatable を使って動的プロキシとしてエクスポートされたリモートオブジェクトは、このクラスのインスタンスをそのプロキシの呼び出しハンドラとして含みます。
ref| コンストラクタと説明 |
|---|
RemoteObjectInvocationHandler(RemoteRef ref)
指定された
RemoteRef を使って新しい RemoteObjectInvocationHandler を作成します。 |
public RemoteObjectInvocationHandler(RemoteRef ref)
RemoteRef を使って新しい RemoteObjectInvocationHandler を作成します。ref - リモート参照NullPointerException - ref が null である場合public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
proxy 上で発行されたメソッド呼び出しを処理し、その結果を返します。
RemoteObjectInvocationHandler では、このメソッドは次のように実装されています。
method が次のメソッドのいずれかである場合、それらは次のように処理されます。
Object.hashCode: プロキシのハッシュコード値を返します。
Object.equals: 引数 (args[0]) が動的プロキシクラスのインスタンスであり、かつその引数の呼び出しハンドラがこの呼び出しハンドラと等しい場合は true を返し、それ以外の場合は false を返します。
Object.toString: プロキシの文字列表現を返します。
そうでない場合、リモート呼び出しが次のようにして実行されます。
proxy が Remote インタフェースのインスタンスでない場合は、IllegalArgumentException がスローされます。
RemoteRef に対して invoke メソッドが呼び出されます。その際、引数として proxy、method、args、および method に対するメソッドハッシュ (「Java Remote Method Invocation (RMI) 仕様」のセクション 8.3 で定義されている) が渡されます。そして、その結果が返されます。
RemoteRef.invoke から例外がスローされ、かつその例外が、proxy のクラスで実装されているメソッドの throws 節に指定されたどの例外にも割り当てられないチェック例外であった場合、その例外が UnexpectedException 内にラップされ、そのラップされた例外がスローされます。それ以外の場合は、invoke によってスローされた例外がこのメソッドによってスローされます。
この呼び出しハンドラを含む有効な動的プロキシクラスのインスタンスによって引数が生成されていなかった場合、このメソッドのセマンティクスは不明となります。
invoke、インタフェース: InvocationHandlerproxy - メソッドが呼び出されるプロキシインスタンスmethod - プロキシインスタンスで呼び出されるインタフェースメソッドに対応する Method インスタンスargs - プロキシインスタンスでのメソッド呼び出し時に渡される引数値を格納するオブジェクト配列。メソッドが引数を取らない場合は null。Throwable - プロキシインスタンスでのメソッド呼び出しからスローされる例外UndeclaredThrowableException バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.