Liberty プロファイルの JMX Java クライアントの開発
Liberty プロファイルの保護された REST コネクターにアクセスする Java™ Management Extensions (JMX) クライアント・アプリケーションを開発することができます。
このタスクについて
JMX リモート・クライアント・アプリケーションを使用して、JMX プログラミングを使用して Liberty プロファイルを管理できます。
手順
- 次のようにして、サンプル JMX クライアントを作成します。REST コネクターでは、標準 JMX API がサポートされます。
import javax.management.remote.JMXServiceURL; import javax.management.MBeanServerConnection; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import java.util.HashMap; public class Test { public static void main(String[] args) { System.setProperty("javax.net.ssl.trustStore", <truststore location>); System.setProperty("javax.net.ssl.trustStorePassword", <truststore password>); //If the type of the trustStore is not jks, which is default, //set the type by using the following line. System.setProperty("javax.net.ssl.trustStoreType", <truststore type>); try { HashMap<String, Object> environment = new HashMap<String, Object>(); environment.put("jmx.remote.protocol.provider.pkgs", "com.ibm.ws.jmx.connector.client"); environment.put(JMXConnector.CREDENTIALS, new String[] { "bob", "bobpassword" }); JMXServiceURL url = new JMXServiceURL("service:jmx:rest://<host>:<port>/IBMJMXConnectorREST"); JMXConnector connector = JMXConnectorFactory.newJMXConnector(url, environment); connector.connect(); MBeanServerConnection mbsc = connector.getMBeanServerConnection(); } catch(Throwable t) { ... } } }
- オプション: SSL 証明書のホスト名検証を使用不可にします。Liberty プロファイルでインストールされる証明書には、サーバーが実際に実行されているホスト名が含まれていないことがあります。SSL 証明書のホスト名検証を使用不可にする場合は、システム・プロパティー com.ibm.ws.jmx.connector.client.disableURLHostnameVerification を true に設定できます。これにより、すべての接続についてホスト名検証が使用不可になります。個別の接続についてホスト名検証を使用不可にする場合は、以下のように、JMX 接続の作成時に新規 environment としてプロパティーを渡します。
HashMap<String, Object> environment = new HashMap<String, Object>(); environment.put("jmx.remote.protocol.provider.pkgs", "com.ibm.ws.jmx.connector.client"); environment.put("com.ibm.ws.jmx.connector.client.disableURLHostnameVerification", Boolean.TRUE); environment.put(JMXConnector.CREDENTIALS, new String[] { "bob", "bobpassword" }); ...
- オプション: 環境マップを使用することで、JMX REST コネクター設定を構成します。
... HashMap<String, Object> environment = new HashMap<String, Object>(); environment.put("com.ibm.ws.jmx.connector.client.rest.maxServerWaitTime", 0); environment.put("com.ibm.ws.jmx.connector.client.rest.notificationDeliveryInterval", 65000); ...
- オプション: Liberty REST コネクターにより、ソケットの取得に使用できるカスタム SSL ソケット・ファクトリーを指定することができます。javax.net.ssl.SSLHandshakeException:
com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException:
unable to find valid certification path to requested target 例外が表示されたら、自身の KeyStore から独自の SSLContext を作成し、そのコンテキストの SocketFactory を REST コネクターに使用することができます。
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); InputStream inputStream = new FileInputStream("myTrustStore.jks"); trustStore.load(inputStream, "password".toCharArray()); TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(trustStore); TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustManagers, null); Map<String, Object> environment = new HashMap<String, Object>(); environment.put(ConnectorSettings.CUSTOM_SSLSOCKETFACTORY, sslContext.getSocketFactory()); environment.put(ConnectorSettings.DISABLE_HOSTNAME_VERIFICATION, true); environment.put("jmx.remote.protocol.provider.pkgs", "com.ibm.ws.jmx.connector.client"); environment.put(JMXConnector.CREDENTIALS, new String[] { "admin", "password" }); JMXServiceURL url = new JMXServiceURL("REST", "myhost", 9443, "/IBMJMXConnectorREST"); jmxConn = JMXConnectorFactory.connect(url, environment);
関連タスク:

インフォメーション・センターに関するご使用条件 | フィードバック

http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_dev_jmxclient
ファイル名: twlp_dev_jmxclient.html