クラス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
関連項目:
  • フィールドのサマリー

    クラスで宣言されたフィールド RemoteObject

    ref
    修飾子と型
    フィールド
    説明
    protected RemoteRef
    オブジェクトのリモート参照です。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    指定されたRemoteRefを使って新しいRemoteObjectInvocationHandlerを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    invoke(Object proxy, Method method, Object[] args)
    このオブジェクトをカプセル化しているプロキシ・インスタンスproxy上で発行されたメソッド呼出しを処理し、その結果を返します。

    クラスで宣言されたメソッド RemoteObject

    equals, getRef, hashCode, toString, toStub
    修飾子と型
    メソッド
    説明
    boolean
    2つのリモート・オブジェクトが等しいかどうかを比較します。
    リモート・オブジェクトに対するリモート参照を返します。
    int
    リモート・オブジェクトに対するハッシュ・コードを返します。
    このリモート・オブジェクトの値を表す文字列を返します。
    static Remote
    パラメータとして渡されたリモート・オブジェクトobjに対するスタブを返します。

    クラスオブジェクトで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • RemoteObjectInvocationHandler

      public RemoteObjectInvocationHandler(RemoteRef ref)
      指定されたRemoteRefを使って新しいRemoteObjectInvocationHandlerを作成します。
      パラメータ:
      ref - リモート参照
      スロー:
      NullPointerException - refnullである場合
  • メソッドの詳細

    • invoke

      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
      このオブジェクトをカプセル化しているプロキシ・インスタンスproxy上で発行されたメソッド呼出しを処理し、その結果を返します。

      RemoteObjectInvocationHandlerでは、このメソッドは次のように実装されています。

      methodが次のメソッドのいずれかである場合、それらは次のように処理されます。

      • Object.hashCode: プロキシのハッシュ・コード値を返します。
      • Object.equals: 引数(args[0])が動的プロキシ・クラスのインスタンスであり、かつその引数の呼出しハンドラがこの呼出しハンドラと等しい場合はtrueを返し、それ以外の場合はfalseを返します。
      • Object.toString: プロキシの文字列表現を返します。

      methodObject.finalizeをオーバーライドする場合、これは無視されます。

      そうでない場合、リモート呼出しが次のようにして実行されます。

      • proxyRemoteインタフェースのインスタンスでない場合は、IllegalArgumentExceptionがスローされます。
      • それ以外の場合は、この呼出しハンドラのRemoteRefに対してinvokeメソッドが呼び出されます。その際、引数としてproxymethodargs、およびmethodに対するメソッド・ハッシュ(「Java Remote Method Invocation (RMI)仕様」のセクション8.3で定義されている)が渡されます。そして、その結果が返されます。
      • RemoteRef.invokeから例外がスローされ、かつその例外が、proxyのクラスで実装されているメソッドのthrows節に指定されたどの例外にも割り当てられないチェック例外であった場合、その例外がUnexpectedException内にラップされ、そのラップされた例外がスローされます。 それ以外の場合は、invokeによってスローされた例外がこのメソッドによってスローされます。

      この呼出しハンドラを含む有効な動的プロキシ・クラスのインスタンスによって引数が生成されていなかった場合、このメソッドのセマンティックスは不明となります。

      定義:
      invoke、インタフェースInvocationHandler
      パラメータ:
      proxy - メソッドが呼び出されるプロキシ・インスタンス
      method - プロキシ・インスタンスで呼び出されるインタフェース・メソッドに対応するMethodインスタンス
      args - プロキシ・インスタンスでのメソッド呼出し時に渡される引数値を格納するオブジェクト配列。メソッドが引数を取らない場合はnull
      戻り値:
      プロキシ・インスタンスでのメソッド呼び出しからの戻り値
      スロー:
      Throwable - プロキシ・インスタンスでのメソッド呼び出しからスローされる例外
      関連項目: