Supervisión del registro de aplicación utilizando notificaciones JMX

Los desarrolladores de Java pueden crear programas para supervisar registros del servidor de aplicaciones mediante las notificaciones JMX.

Acerca de esta tarea

Las escuchas de mensajes de registro más comunes están escritas en Java, y se conectan al gestor de despliegue o a un servidor de aplicaciones utilizando SOAP. Utilice este tema para construir un cliente Java que escuche los sucesos de registro.
Nota: En este tema se hace referencia a uno o más de los archivos de registro del servidor de aplicaciones. Como alternativa recomendada, puede configurar el servidor para utilizar la infraestructura de registro y rastreo HPEL en lugar de utilizar los archivos SystemOut.log , SystemErr.log, trace.log y activity.log en sistemas distribuidos y de IBM® i. Puede también utilizar HPEL junto con sus recursos de registro nativos de z/OS. Si utiliza HPEL, puede acceder a toda la información de registro y rastreo utilizando la herramienta de línea de mandatos LogViewer desde el directorio bin de perfil de servidor. Consulte la información sobre la utilización de HPEL para resolver problemas de aplicaciones para obtener más información sobre la utilización de HPEL.
Avoid trouble Avoid trouble: Tenga cuidado al añadir escuchas para servidores con un alto volumen de registro, ya que las notificaciones JMX pueden ralentizar el servidor. gotcha

Procedimiento

  1. Importe los paquetes necesarios. Generalmente necesitará las siguientes sentencias de importación al principio del programa Java:
    import javax.management.Notification;
    import javax.management.NotificationListener;
    import javax.management.ObjectName;
    import javax.management.InstanceNotFoundException;
    import javax.management.MalformedObjectNameException;
    
    import com.ibm.websphere.management.AdminClient;
    import com.ibm.websphere.management.AdminClientFactory;
    import com.ibm.websphere.management.exception.ConnectorException;
    Además, para manejar los mensajes y los tipos que devuelvan las llamadas en pasos posteriores necesitará las sentencias de importación siguientes.
    import java.util.Iterator;
    import java.util.Properties;
    import java.util.Set;
    import com.ibm.websphere.ras.RasMessage; 
  2. Cree una clase Java que implemente la interfaz NotificationListener.
  3. Implemente el método handleNotification. El ejemplo siguiente es un ejemplo que graba el texto del mensaje en la consola de Java:
    public void handleNotification(Notification notification, Object handback) {
            RasMessage rasMessage = (RasMessage)notification.getUserData() ;
            System.out.println("Localized message: " + rasMessage.getLocalizedMessage(null));
    }
  4. Conecte con el puerto SOAP del servidor cuyos MBeans JMX desee supervisar. El código siguiente crea un objeto AdminClient conectado a SOAP con un host y un puerto especificados:
            AdminClient adminClient = null;
            String hostName = "someHostName";
            String soapPort = "8880";
    
            Properties connectProps = new Properties();
            connectProps.setProperty(AdminClient.CONNECTOR_TYPE, "SOAP");
            connectProps.setProperty(AdminClient.CONNECTOR_HOST, hostName);
            connectProps.setProperty(AdminClient.CONNECTOR_PORT, soapPort);
    
            try {
                adminClient = AdminClientFactory.createAdminClient(connectProps);
            } catch (ConnectorException e) {
                // código para manejo de errores
            } 
  5. Recupere el nombre de objeto MBean del MBean RasLoggingService. El código siguiente recupera el nombre de objeto MBean RasLoggingService:
            String queryString = "WebSphere:cell="+cellName+",node="+nodeName+",process="+serverName+",type=RasLoggingService,*" ;
            Set<ObjectName> objectMBeans = null;
            try {
                ObjectName queryName = new ObjectName(queryString);
                objectMBeans = (Set<ObjectName>)adminClient.queryNames(queryName, null);
                if (objectMBeans.size() > 1) {
                    // error al manejar el código para tratar el caso en que se obtenga más de un nombre.             }
            } catch (MalformedObjectNameException e) {
                // código para manejo de errores
            } catch (ConnectorException e) {
                // código para manejo de errores
            }
    
            if (objectMBeans.isEmpty()) {
                // error al manejar el código para tratar el caso en que el MBean no se encuentra.         }
    
            Iterator<ObjectName> objectNames = objectMBeans.iterator() ;
            ObjectName objectName = objectNames.next() ; 
  6. Añada el escucha de notificaciones. Este código de ejemplo añade un receptor de notificaciones, espera 60 segundos mientras procesa notificaciones y, a continuación, elimina el receptor de notificaciones. Un receptor puede estar conectado el tiempo que sea necesario.
            try {
                adminClient.addNotificationListener(objectName, this, null, null);
                Thread.sleep(60 * 1000) ;
                adminClient.removeNotificationListener(objectName, this) ;
            } catch (InstanceNotFoundException e) {
                // código para manejo de errores
            } catch (ConnectorException e) {
                // código para manejo de errores
            } catch(Exception e) {
                // código para manejo de errores
            }
  7. Añada el jar necesario en la classpath. Añada el archivo jar de cliente de administración a la classpath para poder compilar y ejecutar el código. El archivo jar del cliente de administración se encuentra en el directorio <install_root>/runtimes.

Resultados

Ha creado un programa Java en el que puede realizar escuchas y realizar acciones como resultado de las notificaciones de sucesos de registro de un servidor de aplicaciones.

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=ttrb_HPELNotification
File name: ttrb_HPELNotification.html