モジュール java.rmi
パッケージ java.rmi.server

クラスRemoteObjectInvocationHandler

  • すべての実装されたインタフェース:
    Serializable, InvocationHandler, Remote


    public class RemoteObjectInvocationHandler
    extends RemoteObject
    implements InvocationHandler
    Java Remote Method Invocation (Java RMI)で使用するためのInvocationHandlerインタフェースの実装です。 この呼出しハンドラは、動的プロキシ・インスタンスと組み合わせて、事前生成されたスタブ・クラスの代わりとして使用できます。

    アプリケーションがこのクラスを直接使用することは想定されていません。 UnicastRemoteObjectまたはActivatableを使って動的プロキシとしてエクスポートされたリモート・オブジェクトは、このクラスのインスタンスをそのプロキシの呼出しハンドラとして含みます。

    導入されたバージョン:
    1.5
    関連項目:
    直列化された形式
    • コンストラクタの詳細

      • 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 - プロキシ・インスタンスでのメソッド呼び出しからスローされる例外
        関連項目:
        UndeclaredThrowableException