モジュール java.management.rmi

クラスRMIConnectorServer

    • フィールドの詳細

      • JNDI_REBIND_ATTRIBUTE

        public static final String JNDI_REBIND_ATTRIBUTE

        RMIコネクタ・サーバーを表すRMIServerスタブが同じアドレスの既存のスタブをオーバーライドするかどうかを指定する属性の名前です。 この属性に値を関連付ける場合、"true"または"false"と同等の文字列(英字の大文字と小文字の区別はしない)を指定する必要があります。 デフォルト値はfalseです。

        関連項目:
        定数フィールド値
      • RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE

        public static final String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE

        作成されたRMIオブジェクトのRMIClientSocketFactoryをこのコネクタに指定する属性の名前です。 この属性にはRMIClientSocketFactory型の値を関連付ける必要があり、その値はコネクタ・サーバーの作成時に指定されたMap引数内にのみ指定できます。

        関連項目:
        定数フィールド値
      • RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE

        public static final String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE

        作成されたRMIオブジェクトのRMIServerSocketFactoryをこのコネクタに指定する属性の名前です。 この属性にはRMIServerSocketFactory型の値を関連付ける必要があり、その値はコネクタ・サーバーの作成時に指定されたMap引数内にのみ指定できます。

        関連項目:
        定数フィールド値
      • CREDENTIAL_TYPES

        @Deprecated(since="10",
                    forRemoval=true)
        public static final String CREDENTIAL_TYPES
        非推奨、削除予定: このAPI要素は将来のバージョンで削除予定です。
        かわりに、CREDENTIALS_FILTER_PATTERNフィルタ・パターン文字列とともに使用します。
        RMIServer.newClient()リモート・メソッド・コールのパラメータとして受け入れられるクラス名のリストを指定する属性の名前。

        このクラスのリストは、RMIServer実装に関連付けられたインストール済JMXAuthenticatorで使用される資格証明クラス(またはクラス)の推移的クローズに対応している必要があります。

        属性が設定されていないかnullの場合、すべてのクラスは許容可能とみなされます。

        関連項目:
        定数フィールド値
      • CREDENTIALS_FILTER_PATTERN

        public static final String CREDENTIALS_FILTER_PATTERN
        ObjectInputFilterパターン文字列を指定して、RMIServer.newClient()リモート・メソッド・コールで受け入れられるクラスをフィルタする属性の名前。

        フィルタ・パターンは、ObjectInputFilter.Config.createFilter(java.lang.String)で使用される形式と同じである必要があります。

        フィルタで許可されるクラスのこのリストは、RMIServer実装に関連付けられたインストール済のJMXAuthenticatorで使用される資格証明クラス(またはクラス)の推移的クローズに対応している必要があります。 属性が設定されていない場合、どのクラスも許容可能とみなされます。

        関連項目:
        ObjectInputFilter定数フィールド値
      • SERIAL_FILTER_PATTERN

        public static final String SERIAL_FILTER_PATTERN
        この属性は、任意のクライアントによってJMXConnectorServerに送信されたオブジェクトをデシリアライズするときに使用されるObjectInputFilterを作成するパターンを定義します。

        フィルタは、すべてのJMX定義クラス(ObjectNameなど)、すべてのメソッド・パラメータ(ストリームに存在する場合)を含め、クライアントによってサーバーに送信されるシリアライズ・ストリームで見つかったクラスに対してコールされます。また、すべてのクラスが、デシリアライズ・オブジェクトのシリアル形式によって推移的に参照されます。 パターンは、ObjectInputFilter.Config.createFilter(java.lang.String)で使用される形式と同じである必要があります。 許可されたクラスの許可リスト、拒否されたクラスの拒否リスト、直列化復元されたオブジェクトの最大深度などを定義できます。

        フィルタを機能させるには、RMIConnectionインタフェースでパラメータと呼ばれるすべてのJMXクラスをシリアライズするときにシリアライズされる可能性のあるすべてのオブジェクトの推移的クローズにおいて、少なくともすべての具象型を許可する必要があります。また、MBeanServerに登録されているMBeansと相互運用するために、clientマーシャリングされたオブジェクトでラップされたものを転送する必要があるすべてのクラスも許可する必要があります。 これには、すべての具象JMX OpenTypesおよびそれらがシリアル形式で使用するクラスが含まれる可能性があります。

        このようなフィルタを定義する際には注意が必要です。狭すぎる許可リストや広すぎる拒否リストを定義すると、正規のクライアントがJMXConnectorServerと相互運用できなくなる可能性があります。

        関連項目:
        定数フィールド値
    • コンストラクタの詳細

      • RMIConnectorServer

        public RMIConnectorServer​(JMXServiceURL url,
                                  Map<String,​?> environment)
                           throws IOException

        RMIConnectorServerを作成します。 これは、RMIConnectorServer(directoryURL,environment,null,null)の呼び出しと同等です。

        パラメータ:
        url - コネクタ・サーバーの作成方法を定義するURL。 nullは不可。
        environment - RMIオブジェクトの作成と格納を管理する属性。 nullも可、その場合は空マップと同等。
        例外:
        IllegalArgumentException - urlがnullである場合。
        MalformedURLException - urlがRMIコネクタの構文に準拠していない場合、またはそのプロトコルがこの実装で認識されない場合。 このコンストラクタを使用する場合、"rmi"のみが有効です。
        IOException - 何らかの理由でコネクタ・サーバーを作成できない場合、またはstartメソッドの失敗を避けられない場合。
      • RMIConnectorServer

        public RMIConnectorServer​(JMXServiceURL url,
                                  Map<String,​?> environment,
                                  MBeanServer mbeanServer)
                           throws IOException

        指定されたMBeanサーバーのRMIConnectorServerを作成します。 これは、RMIConnectorServer(directoryURL,environment,null,mbeanServer)の呼び出しと同等です。

        パラメータ:
        url - コネクタ・サーバーの作成方法を定義するURL。 nullは不可。
        environment - RMIオブジェクトの作成と格納を管理する属性。 nullも可、その場合は空マップと同等。
        mbeanServer - 新しいコネクタ・サーバーの接続先MBeanサーバー。このコネクタ・サーバーをMBeanサーバーに登録することによってMBeanサーバーに接続する場合はnull。
        例外:
        IllegalArgumentException - urlがnullである場合。
        MalformedURLException - urlがRMIコネクタの構文に準拠していない場合、またはそのプロトコルがこの実装で認識されない場合。 このコンストラクタを使用する場合、"rmi"のみが有効です。
        IOException - 何らかの理由でコネクタ・サーバーを作成できない場合、またはstartメソッドの失敗を避けられない場合。
      • RMIConnectorServer

        public RMIConnectorServer​(JMXServiceURL url,
                                  Map<String,​?> environment,
                                  RMIServerImpl rmiServerImpl,
                                  MBeanServer mbeanServer)
                           throws IOException

        指定されたMBeanサーバーのRMIConnectorServerを作成します。

        パラメータ:
        url - コネクタ・サーバーの作成方法を定義するURL。 nullは不可。
        environment - RMIオブジェクトの作成と格納を管理する属性。 nullも可、その場合は空マップと同等。
        rmiServerImpl - urlに指定されたプロトコル型に準拠した、RMIServerインタフェースの実装。 このパラメータの値がnull以外の場合、urlに指定されたプロトコル・タイプは強制されず、有効と見なされる。 それ以外の場合、rmiのみが認識されます。
        mbeanServer - 新しいコネクタ・サーバーの接続先MBeanサーバー。このコネクタ・サーバーをMBeanサーバーに登録することによってMBeanサーバーに接続する場合はnull。
        例外:
        IllegalArgumentException - urlがnullである場合。
        MalformedURLException - urlがRMIコネクタの構文に準拠していない場合、またはそのプロトコルがこの実装で認識されない場合。 rmiServerImplがnullの場合、rmiのみが認識されます。
        IOException - 何らかの理由でコネクタ・サーバーを作成できない場合、またはstartメソッドの失敗を避けられない場合。
        関連項目:
        start()
    • メソッドの詳細

      • toJMXConnector

        public JMXConnector toJMXConnector​(Map<String,​?> env)
                                    throws IOException

        このコネクタ・サーバーのクライアント・スタブを返します。 クライアント・スタブは直列化可能なオブジェクトです。このオブジェクトのconnectメソッドを使用して、このコネクタ・サーバーとの新しい接続を1つ確立できます。

        定義:
        toJMXConnector、インタフェースJMXConnectorServerMBean
        オーバーライド:
        toJMXConnector、クラスJMXConnectorServer
        パラメータ:
        env - JMXConnector.connect(Map)に提供可能な同じ種類のクライアント接続パラメータ。 nullも可、その場合は空マップと同等。
        戻り値:
        このコネクタ・サーバーとの新しい接続を確立するために使用できるクライアント・スタブ。
        例外:
        UnsupportedOperationException - このコネクタ・サーバーがクライアント・スタブの生成機能をサポートしない場合。
        IllegalStateException - JMXConnectorServerが起動していない場合(JMXConnectorServerMBean.isActive()を参照)。
        IOException - 通信障害により、スタブを作成できない場合。
      • start

        public void start()
                   throws IOException

        アクティブになったコネクタ・サーバーは、クライアント接続の待機を開始します。 コネクタ・サーバーがすでにアクティブな場合は、このメソッドを呼び出しても何も起こりません。 コネクタ・サーバーが停止している状態でこのメソッドを呼び出すと、IOExceptionが生成されます。

        初期呼出し時のこのメソッドの動作は、次のように、構築時に指定されたパラメータに依存します。

        まず、RMIからコネクタ・サーバーをエクスポートするため、RMIServerImplのサブクラスのオブジェクトが要求されます。

        • コンストラクタにRMIServerImplが指定されていた場合は、これが使用されます。
        • それ以外の場合、JMXServiceURLがnullであるか、そのプロトコル部分がrmiであれば、RMIJRMPServerImpl型のオブジェクトが作成されます。
        • それ以外の場合、実装は実装固有のRMIServerImplを作成できるか、またはMalformedURLExceptionをスローできます。

        指定されたアドレスに、javax.management.remote.rmiのパッケージ・ドキュメントに指定されたとおりのJNDIディレクトリURLが含まれる場合、このRMIConnectorServerは、指定されたアドレスにRMIServerImplをバインドすることにより、ブートストラップします。

        JMXServiceURLのURLパス部分が空または単一のスラッシュ(/)である場合、RMIオブジェクトはディレクトリにバインドされません。 かわりに、参照はRMIConnectorServerアドレスのURLパス(JMXConnectorServerMBean.getAddress()によって返される)にエンコードされます。 rmiのエンコーディングについては、javax.management.remote.rmiのパッケージ・ドキュメントに記載されています。

        URLパスが空でもJNDIディレクトリURLでもない場合、またはプロトコルがrmiでもない場合の動作は実装で定義され、コネクタ・サーバーの作成時または起動時にMalformedURLExceptionをスローすることが含まれます。

        例外:
        IllegalStateException - コネクタ・サーバーがMBeanサーバーに接続されていない場合。
        IOException - コネクタ・サーバーを起動できない場合。
      • stop

        public void stop()
                  throws IOException

        コネクタ・サーバーを終了して、クライアント接続の待機を停止します。 このメソッドを呼び出すと、このサーバーで作成されたすべてのクライアント接続が終了します。 このメソッドが正常に終了した場合も、例外を生成して終了した場合も、コネクタ・サーバーは新しいクライアント接続を作成しなくなります。

        いったん停止したコネクタ・サーバーを再度起動することはできません。

        コネクタ・サーバーがすでに停止している場合は、このメソッドを呼び出しても何も起こりません。 コネクタ・サーバーがまだ起動していない状態でこのメソッドを呼び出すと、コネクタ・サーバー・オブジェクトが永続的に無効化されます。

        クライアント接続の終了時に生成された例外は、このメソッドからはスローされません。 このMBeanからは、JMXConnectionNotificationと、終了できなかった接続の接続IDが発行されます。

        コネクタ・サーバーの終了は、時間のかかるオペレーションです。 たとえば有効な接続を持っているクライアント・マシンがクラッシュした場合、終了オペレーションはネットワーク・プロトコルのタイム・アウトまで中断される可能性があります。 終了オペレーションの途中で待たされたくない場合は、別スレッドで実行してください。

        このメソッドは、コネクタ・サーバーのRMIServerImplオブジェクト上でcloseメソッドを呼び出します。

        startメソッドでRMIServerImplがJNDIディレクトリにバインドされている場合、このメソッドでバインドが解除されます。

        例外:
        IOException - サーバーを正常に終了できない場合、またはディレクトリからRMIServerImplのバインドを解除できない場合。 この例外がスローされたとき、サーバーはすでにすべてのクライアント接続の終了(該当する場合)、RMIServerImpl.close()の呼び出し、およびディレクトリからのRMIServerImplのバインド解除(該当する場合)を試行している。 サーバーが終了を試行したとき例外が生成されたものを除いて、すべてのクライアント接続が終了している。