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
、インタフェース: InvocationHandler
proxy
- メソッドが呼び出されるプロキシインスタンスmethod
- プロキシインスタンスで呼び出されるインタフェースメソッドに対応する Method
インスタンスargs
- プロキシインスタンスでのメソッド呼び出し時に渡される引数値を格納するオブジェクト配列。メソッドが引数を取らない場合は null
。Throwable
- プロキシインスタンスでのメソッド呼び出しからスローされる例外UndeclaredThrowableException
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.