モジュール java.management.rmi

クラスRMIConnectorServer

すべての実装されたインタフェース:
MBeanRegistration, NotificationBroadcaster, NotificationEmitter, JMXAddressable, JMXConnectorServerMBean

public class RMIConnectorServer extends JMXConnectorServer

リモート・クライアントからのRMIベースの接続を作成するJMX APIコネクタ・サーバーです。 通常、こうしたコネクタ・サーバーは、JMXConnectorServerFactoryで作成されます。 しかし、RMIServerImplオブジェクトなど、このクラスを直接使用できる特殊なアプリケーションもあります。

導入されたバージョン:
1.5
  • フィールド詳細

    • 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引数内にのみ指定できます。

      関連項目:
    • CREDENTIALS_FILTER_PATTERN

      public static final String CREDENTIALS_FILTER_PATTERN
      RMIServer.newClient()リモート・メソッド呼び出しで許容されるクラスをフィルタ処理するためのObjectInputFilterパターン文字列を指定する属性の名前。

      フィルタ・パターンは、ObjectInputFilter.Config.createFilter(java.lang.String)で使用されているものと同じ形式でなければなりません

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

      関連項目:
    • SERIAL_FILTER_PATTERN

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

      フィルタは、すべてのJMX定義クラス(ObjectNameなど)、すべてのメソッド・パラメータ、およびストリーム内に存在する場合は、直列化復元されたオブジェクトのシリアル形式によって推移的に参照されるすべてのクラスを含む、クライアントによってサーバーに送信される直列化ストリームで検出されたすべてのクラス。 パターンは、ObjectInputFilter.Config.createFilter(java.lang.String)で使用されているものと同じ形式でなければなりません。 許可されたクラスの許可リスト、拒否されたクラスの拒否リスト、直列化復元されたオブジェクトの最大深度などを定義できます。

      機能するためには、RMIConnectionインタフェースのパラメータと呼ばれるすべてのJMXクラスと、clientがラップして送信する必要があるすべてのクラスを直列化するときに直列化される可能性のあるすべてのオブジェクトの推移的クロージャの少なくともすべての具体的な型をフィルタで許可する必要がありますMBeanServerに登録されているMBeanと相互運用するために「マーシャルされたオブジェクト」を使用します。 これには、具体的な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メソッドの失敗を避けられない場合。
      関連項目:
  • メソッドの詳細

    • toJMXConnector

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

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

      定義:
      toJMXConnector、インタフェースJMXConnectorServerMBean
      オーバーライド:
      toJMXConnector、クラスJMXConnectorServer
      パラメータ:
      env - JMXConnector.connect(Map)に提供可能な同じ種類のクライアント接続パラメータ。 nullも可、その場合は空マップと同等。
      戻り値:
      このコネクタ・サーバーとの新しい接続を確立するために使用できるクライアント・スタブ。
      例外:
      UnsupportedOperationException - このコネクタ・サーバーがクライアント・スタブの生成機能をサポートしない場合。
      IllegalStateException - JMXConnectorServerが起動していない場合(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オブジェクトはディレクトリにバインドされません。 代わりに、その参照が、getAddress()から返されるRMIConnectorServerアドレスのURLパス内にエンコードされます。 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のバインド解除(該当する場合)を試行している。 サーバーが終了を試行したとき例外が生成されたものを除いて、すべてのクライアント接続が終了している。
    • isActive

      public boolean isActive()
      次のインタフェースからコピーされた説明: JMXConnectorServerMBean

      コネクタ・サーバーがアクティブかどうかを判定します。 startメソッドが正常に終了すると、コネクタ・サーバーはアクティブになります。その後、stopメソッドが呼び出されるか、障害が発生するまで、コネクタ・サーバーはアクティブな状態を維持します。

      戻り値:
      コネクタ・サーバーがアクティブな場合はtrue。
    • getAddress

      public JMXServiceURL getAddress()
      次のインタフェースからコピーされた説明: JMXConnectorServerMBean

      このコネクタ・サーバーのアドレス。

      コネクタ・サーバーの作成時に指定されたアドレスが完全であるとは限らないため、返されるアドレスは元のJMXServiceURLとは一致しない可能性があります。 たとえば、ポート番号はコネクタ・サーバーの起動時に動的に割り当てられることがあります。 このため、返されるアドレスはJMXConnectorServerの実際のJMXServiceURLです。 これは、クライアントがJMXConnectorFactory.connect(JMXServiceURL)に指定するアドレスです。

      JMXConnectorServerがまだactiveでない場合、返されるアドレスはnullになります。

      戻り値:
      このコネクタ・サーバーのアドレス。存在しない場合はnull。
    • getAttributes

      public Map<String,?> getAttributes()
      次のインタフェースからコピーされた説明: JMXConnectorServerMBean

      このコネクタ・サーバーの属性。

      戻り値:
      このコネクタ・サーバーの属性を含む読取り専用マップ。 直列化可能な値を持つ属性は、このマップから除外される。 直列化可能な属性が存在しない場合、空のマップが返される。