Développement d'un client Java JMX pour le profil Liberty
Vous pouvez développer une application client JMX (Java™ Management Extensions) pour accéder au connecteur REST sécurisé du profil Liberty.
Pourquoi et quand exécuter cette tâche
Avec une application client distante JMX, vous pouvez administrer le profil Liberty via la programmation JMX.
Procédure
- Développez un client JMX en vous inspirant de l'exemple ci-après. Le connecteur REST prend en charge l'API JMX standard.
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>); //Si le type de fichier de clés n'est pas jks, qui est le type par défaut, //définissez le type en entrant la ligne suivante. 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) { ... } } }
- Facultatif : Désactivez la vérification du nom d'hôte pour les certificats SSL. Les certificats installés avec le profil Liberty ne contiennent pas
forcément le nom d'hôte du système sur lequel le serveur s'exécute. Si vous voulez
désactiver la vérification du nom d'hôte des certificats SSL, vous pouvez associer la propriété système com.ibm.ws.jmx.connector.client.disableURLHostnameVerification à la valeur true.
La vérification du nom d'hôte sera alors désactivée pour toutes les connexions. Pour désactiver la vérification du nom d'hôte sur une base de connexion
individuelle, transmettez la propriété en tant que nouvel élément environment lorsque vous créez la connexion JMX :
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" }); ...
- Facultatif : Configurez les paramètres du connecteur REST JMX en utilisant la mappe d'environnement.
... 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); ...
- Facultatif : Le connecteur REST de Liberty vous permet de spécifier une fabrique de sockets personnalisée pouvant être utilisée pour obtenir des sockets. Si l'exception javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.j: Echec de la construction du chemin PKIX : java.security.cert.CertPathBuilderException: impossible d'identifier un chemin de certification valide pour la cible demandée , s'affiche, vous pouvez créer votre propre objet SSLContext depuis vos fichiers de clés, puis utiliser la fabrique SocketFactory de ce contexte avec le connecteur 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);
Rubrique parent : Configuration d'une connexion JMX sécurisée dans le profil Liberty
Tâches associées:

Dispositions pour les centres de documentation | Commentaires

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