クラスRemoteObjectInvocationHandler
java.lang.Object
java.rmi.server.RemoteObject
java.rmi.server.RemoteObjectInvocationHandler
- すべての実装されたインタフェース:
Serializable, InvocationHandler, Remote
public class RemoteObjectInvocationHandler extends RemoteObject implements InvocationHandler
Java Remote Method Invocation (Java RMI)で使用するための
InvocationHandlerインタフェースの実装です。 この呼出しハンドラは、動的プロキシ・インスタンスと組み合わせて、事前生成されたスタブ・クラスの代わりとして使用できます。
アプリケーションがこのクラスを直接使用することは想定されていません。 UnicastRemoteObjectで動的プロキシを使用するようにエクスポートされたリモート・オブジェクトには、そのプロキシ起動ハンドラとしてこのクラスのインスタンスがあります。
- 導入されたバージョン:
- 1.5
- 関連項目:
-
フィールドのサマリー
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明指定されたRemoteRefを使って新しいRemoteObjectInvocationHandlerを作成します。 -
メソッドのサマリー
クラスオブジェクトで宣言されたメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
コンストラクタの詳細
-
RemoteObjectInvocationHandler
public RemoteObjectInvocationHandler(RemoteRef ref) 指定されたRemoteRefを使って新しいRemoteObjectInvocationHandlerを作成します。- パラメータ:
ref- リモート参照- スロー:
NullPointerException-refがnullである場合
-
-
メソッドの詳細
-
invoke
このオブジェクトをカプセル化しているプロキシ・インスタンスproxy上で発行されたメソッド呼出しを処理し、その結果を返します。RemoteObjectInvocationHandlerでは、このメソッドは次のように実装されています。methodが次のメソッドのいずれかである場合、それらは次のように処理されます。Object.hashCode: プロキシのハッシュ・コード値を返します。Object.equals: 引数(args[0])が動的プロキシ・クラスのインスタンスであり、かつその引数の呼出しハンドラがこの呼出しハンドラと等しい場合はtrueを返し、それ以外の場合はfalseを返します。Object.toString: プロキシの文字列表現を返します。
methodがObject.finalizeをオーバーライドする場合、これは無視されます。そうでない場合、リモート呼出しが次のようにして実行されます。
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- プロキシ・インスタンスでのメソッド呼び出しからスローされる例外- 関連項目:
-