Desarrollo de un cliente JMX Java para el perfil Liberty
Puede desarrollar una aplicación cliente de JMX (Java™ Management Extensions) para acceder al conector REST protegido del perfil Liberty.
Acerca de esta tarea
Utilizando una aplicación cliente remota JMX, puede administrar el perfil Liberty mediante la programación de JMX.
Procedimiento
- Desarrolle un cliente JMX de ejemplo tal como se muestra a continuación. El conector REST da soporte a la API JMX estándar.
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) { ... } } }
- Opcional: Inhabilite la verificación de nombre de host para certificados SSL. Los certificados instalados con el perfil Liberty puede que no contengan el nombre de host donde se ejecuta realmente el servidor. Si desea inhabilitar la verificación de nombres de hosts de los certificados de SSL, puede establecer la propiedad del sistema com.ibm.ws.jmx.connector.client.disableURLHostnameVerification en true, que inhabilita la verificación de nombres de hosts para todas las conexiones. Para inhabilitar la verificación de nombres de host para cada conexión de forma individual, pase la propiedad como un nuevo valor de environment cuando cree la conexión 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" }); ...
- Opcional: Configure los Valores del conector REST JMX utilizando la correlación de entornos.
... 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); ...
- Opcional: El conector REST de Liberty le permite especificar una fábrica de sockets SSL personalizada que se puede utilizar para obtener sockets. Si aparece la excepción javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: no se ha podido encontrar la vía de acceso de certificación válida para el destino solicitado, puede crear su propio SSLContext a partir de su propio KeyStores y, a continuación, utilizar SocketFactory desde ese contexto con el conector 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<serie, objeto> environment = new HashMap<serie, objeto>(); 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);
Tema principal: Configuración de una conexión JMX segura con el perfil Liberty
Tareas relacionadas:

Términos y condiciones para centros de información | Comentarios

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