5. JMX

ここでは、JMX Remote API 利用者向けにWebOTXが提供しているクラスについて 説明します。

JMX Remote API を利用する場合には、JMXConnectorオブジェクトを取得する ことで、サーバ側の MBean の情報を取得することができます。
JMXConnector オブジェクトの取得方法としては、JMX Remote API を利用してプロファイル情報を設定する方法 [5.2. JMX Remote API 用クラス] と、WebOTXが提供するクライアント接続用のクラス(JMXRemoteClient)を利用する方法 [5.3. クライアント接続用クラス] があります。

なお、JMX Remote API の利用については [ アプリケーション開発ガイド(共通) > 5. JMXアプリケーションの開発 ] を参照してください。
また、各クラスのリファレンス情報については、下記を参照してください。
WebOTX 提供クラス(for JMX Remote API)

5.1. プロファイル情報

JMX Remote APIを利用する場合、プロファイル情報をサーバとクライアントで 一致させる必要があります。
WebOTXで設定している JMX Remote API のプロファイル情報は次の通りです。

プロファイル 設定値
jmx.remote.profiles "TLS SASL/PLAIN"
jmx.remote.tls.socket.factory (証明書の情報から作成したSSLSocketFactoryオブジェクト)
jmx.remote.tls.enabled.protocols "TLSv1"
jmx.remote.tls.enabled.cipher.suites "SSL_RSA_WITH_NULL_MD5"
jmx.remote.sasl.callback.handler (WebOTXで提供するUserPasswordCallbackHandlerオブジェクト)

5.2. JMX Remote API 用クラス

WebOTX は、JMX Remote API の JMXMPプロトコルを利用する場合、 SASL/PLAIN 認証方式を利用しています。
JMX Remote API 利用者は、このSASL/PLAIN認証方式を利用するために、 java.security.Providerjavax.security.auth.callback.CallnbackHandler の実装クラスとして、 WebOTXが提供している次のクラスを指定する必要があります。

(例)
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

import com.nec.webotx.enterprise.admin.jmx.remote.client.UserPasswordCallbackHandler;
import com.nec.webotx.enterprise.admin.jmx.remote.plainclient.ClientProvider;
...
HashMap env;
...
Security.addProvider(new ClientProvider());
...
env.put("jmx.remote.sasl.callback.handler",
    new UserPasswordCallbackHandler(user, password));
...
JMXServiceURL url = new JMXServiceURL("jmxmp", "localhost", 6712);
JMXConnector jmxc = JMXConnectorFactory.connect(url, env);
....

5.3. クライアント接続用クラス

上記のように JMX Remote API を利用する場合には、既定のプロファイル 情報をクライアント側で設定し、サーバ側のプロファイル設定と一致させる必要があります。
次のクラスを利用することで、WebOTX(サーバ側)で設定しているプロファイル情報 を意識せずにサーバ接続が可能となり、JMXConnector オブジェクトを取得できます。

(例)
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXServiceURL;

import com.nec.webotx.enterprise.admin.jmx.remote.client.*;
...
JMXRemoteClient jmxcl =
    JMXRemoteClientFactory.getJMXRemoteClient();
jmxcl.config(KEYSTORE, KEYPASS, true);
JMXServiceURL url = JMXServiceURL("jmxmp". "locahost", 6712);
JMXConnector jmxc = jmxcl.connect(url.toString(), user, password);
...