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, 2014, Oracle and/or its affiliates. All rights reserved.