public class JMXConnectorServerFactory extends Object
JMX APIコネクタ・サーバーを作成するファクトリです。このクラスのインスタンスは存在しません。
各コネクタ・サーバーは、JMXConnectorServerProvider
のインスタンスによって作成されます。このインスタンスは次のようにして見つけられます。指定されたJMXServiceURL
が"service:jmx:protocol:remainder"
のようだったとします。ファクトリは、そのprotocol
に適切なJMXConnectorServerProvider
の検索を行います。protocol
に含まれる文字+
と-
は、それぞれ.
と_
で置き換えられます。
プロバイダ・パッケージ・リストの検索手順は次のとおりです。
newJMXConnectorServer
のenvironment
パラメータにキーjmx.remote.protocol.provider.pkgs
が含まれる場合、関連付けられている値がプロバイダ・パッケージ・リストになります。
jmx.remote.protocol.provider.pkgs
が存在する場合、その値がプロバイダ・パッケージ・リストになります。
プロバイダ・パッケージ・リストは、縦棒(|
)で区切られた空でないJavaパッケージ名のリストと解釈される文字列です。この文字列が空の場合、プロバイダ・パッケージ・リストも空になります。プロバイダ・パッケージ・リストがStringでない場合、または空文字列を要素として含む場合、JMXProviderException
がスローされます。
空でないプロバイダ・パッケージ・リストが存在する場合、ファクトリにより、リストの各pkg
要素に対して、クラスのロードが試行されます。
pkg.protocol.ServerProvider
newJMXConnectorServer
のenvironment
パラメータにキーjmx.remote.protocol.provider.class.loader
が含まれる場合、関連付けられた値がプロバイダをロードするためのクラス・ローダーになります。関連付けられた値がClassLoader
のインスタンスでない場合は、IllegalArgumentException
がスローされます。
environment
パラメータ内にjmx.remote.protocol.provider.class.loader
キーが含まれない場合、呼出しスレッドのコンテンツ・クラス・ローダーが使用されます。
このクラスのロード時にClassNotFoundException
がスローされた場合、ハンドラの検索はリスト内の次の要素に引き継がれます。
それ以外の場合、JMXProviderException
により、検出されたプロバイダに関する問題が報告されます。この例外のcause
は、次のように潜在的な例外を示します。
ClassNotFoundException
以外の例外がスローされた場合、これがcauseになります。
Class.newInstance()
によって例外がスローされた場合、これがcauseになります。
プロバイダ・パッケージ・リストが存在しないデフォルト状態を含めて、前述の手順でプロバイダが検出されなかった場合、実装はprotocol
に対して固有のプロバイダを使用します。固有のプロバイダがない場合は、MalformedURLException
をスローします。その他の方法でプロバイダを検索することもできます。たとえば、サービス・インタフェースとしてJMXConnectorServerProvider
を使用する、サービス・プロバイダのJAR規約がサポートされていることがあります。
すべての実装は、文字列rmi
で指定される、デフォルトのRMIトランスポートを使用するRMIコネクタ・プロトコルをサポートしている必要があります。文字列iiop
で指定される、RMI/IIOPトランスポートを使用するRMIコネクタ・プロトコルをオプションでサポートすることもできます。
プロバイダが見つかった場合、newJMXConnectorServer
メソッドの結果が、そのプロバイダ上でnewJMXConnectorServer
を呼び出した結果に一致します。
JMXConnectorServerProvider
に渡されたMap
パラメータは、JMXConnectorServerFactory.newJMXConnectorServer
のenvironment
パラメータ内にあったすべてのエントリを含む、新しい読取り専用Map
になります。さらに、environment
パラメータ内にjmx.remote.protocol.provider.class.loader
キーが存在しない場合、新しい読取り専用Map
に追加されます。呼出しスレッドのコンテキスト・クラス・ローダーが値として関連付けられます。
修飾子と型 | フィールドと説明 |
---|---|
static String |
DEFAULT_CLASS_LOADER
デフォルトのクラス・ローダーを指定する属性の名前です。
|
static String |
DEFAULT_CLASS_LOADER_NAME
デフォルトのクラス・ローダーMBean名を指定する属性の名前です。
|
static String |
PROTOCOL_PROVIDER_CLASS_LOADER
プロトコル・プロバイダをロードするクラス・ローダーを指定する属性の名前です。
|
static String |
PROTOCOL_PROVIDER_PACKAGES
プロトコル・ハンドラの検索時に照会されるプロバイダ・パッケージを指定する属性の名前です。
|
修飾子と型 | メソッドと説明 |
---|---|
static JMXConnectorServer |
newJMXConnectorServer(JMXServiceURL serviceURL, Map<String,?> environment, MBeanServer mbeanServer)
指定されたアドレスのコネクタ・サーバーを作成します。
|
public static final String DEFAULT_CLASS_LOADER
デフォルトのクラス・ローダーを指定する属性の名前です。このクラス・ローダーは、MBean固有のクラス・ローダーの照会後(任意)、クライアントから受信した要求に含まれるオブジェクトを直列化復元するために使用されます。この属性には、値として、ClassLoader
のインスタンスが関連付けられます。
public static final String DEFAULT_CLASS_LOADER_NAME
デフォルトのクラス・ローダーMBean名を指定する属性の名前です。このクラス・ローダーは、MBean固有のクラス・ローダーの照会後(任意)、クライアントから受信した要求に含まれるオブジェクトを直列化復元するために使用されます。この属性には、値として、ObjectName
のインスタンスが関連付けられます。
public static final String PROTOCOL_PROVIDER_PACKAGES
プロトコル・ハンドラの検索時に照会されるプロバイダ・パッケージを指定する属性の名前です。この属性には、値として、縦棒(|
)で区切られたパッケージ名から成る文字列が関連付けられます。
public static final String PROTOCOL_PROVIDER_CLASS_LOADER
プロトコル・プロバイダをロードするクラス・ローダーを指定する属性の名前です。この属性には、値として、ClassLoader
のインスタンスが関連付けられます。
public static JMXConnectorServer newJMXConnectorServer(JMXServiceURL serviceURL, Map<String,?> environment, MBeanServer mbeanServer) throws IOException
指定されたアドレスのコネクタ・サーバーを作成します。作成されたサーバーは、start
メソッドが呼び出されるまで起動しません。
serviceURL
- 新しいコネクタ・サーバーのアドレス。getAddress
メソッドによって返される新しいコネクタ・サーバーの実際のアドレスは、厳密に同じであるとは限らない。たとえば、元のアドレスに含まれていないポート番号が含まれている場合がある。environment
- 新しいコネクタ・サーバーの動作を制御する属性のセット。このパラメータはnullも可。このマップ内のキーはStringでなければならない。関連付けられている個々の値にどの型が適切かは、属性によって決定される。この呼出しがenvironment
を変更することはない。mbeanServer
- このコネクタ・サーバーの接続先MBeanサーバー。このコネクタ・サーバーをMBeanサーバーに登録することによってMBeanサーバーに接続する場合はnull。JMXConnectorServer
。このメソッドが正常に呼び出されると、そのたびに異なったオブジェクトが生成される。NullPointerException
- serviceURL
がnullである場合。IOException
- 通信障害によりコネクタ・サーバーを作成できない場合。MalformedURLException
- serviceURL
内にプロトコルのプロバイダが存在しない場合。JMXProviderException
- serviceURL
内にプロトコルのプロバイダが存在するが、何らかの理由で使用できない場合。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.