JMX-Java-Client für das Liberty-Profil entwickeln
Sie können eine JMX-Clientanwendung (Java™ Management Extensions) entwickeln, um auf den gesicherten REST-Connector des Liberty-Profils zuzugreifen.
Informationen zu diesem Vorgang
Wenn Sie eine ferne JMX-Clientanwendung verwenden, können Sie das Liberty-Profil mit JMX-Programmierung verwalten.
Vorgehensweise
- Entwickeln Sie wie folgt einen JMX-Beispielclient. Der REST-Connector
unterstützt die JMX-Standard-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-Position>); System.setProperty("javax.net.ssl.trustStorePassword", <Truststore-Kennwort>); // Wenn trustStore nicht den Standardtyp jks hat, setzen Sie den // Typ mit der folgenden Zeile. 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) { ... } } }
- Optional: Inaktivieren Sie die Überprüfung des Hostnamens für
SSL-Zertifikate. Die mit dem Liberty-Profil installierten Zertifikate enthalten möglicherweise nicht den Namen des Hosts,
auf dem der Server tatsächlich ausgeführt wird. Wenn Sie die Überprüfung des Hostnamens für
SSL-Zertifikate inaktivieren möchten, können Sie die Systemeigenschaft
com.ibm.ws.jmx.connector.client.disableURLHostnameVerification auf "true" setzen. Damit
wird die Überprüfung des Hostnamens für alle Verbindungen inaktiviert.
Zum Inaktivieren der Hostnamensprüfung auf Verbindungsbasis übergeben Sie die Eigenschaft als neue
environment, wenn Sie die JMS-Verbindung erstellen:
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" }); ...
- Optional: Konfigurieren Sie die Einstellungen des JMX-REST-Connectors mit der Umgebungsmap.
... 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); ...
- Optional: Mit dem Liberty-REST-Connector können Sie eine angepasste SSL-Socket-Factory angeben, die zum Abrufen von Sockets verwendet werden kann. Wenn
die Ausnahme 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 angezeigt wird, können Sie Ihren eigenen
SSLContext aus Ihren eigenen Keystores
erstellen und dann die SocketFactory aus diesem Kontext für den REST-Connector verwenden.
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);
Übergeordnetes Thema: Sichere JMX-Verbindung zum Liberty-Profil konfigurieren
Zugehörige Tasks:

Nutzungsbedingungen für Information Center | Feedback

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