Ejemplo: Configuración de clases handler para descriptores de despliegue de servicios web

En este marco se describe cómo añadir una clase handler cliente y servidor a una aplicación de ejemplo llamada WebServicesSamples.ear. Las clases handler muestran mensajes cuando se proporciona una solicitud o respuesta para manejar.

El código de la clase handler cliente se muestra en el siguiente ejemplo:

package samples;

public class ClientHandler implements javax.xml.rpc.handler.Handler {
    public ClientHandler() { }

public boolean handleRequest(javax.xml.rpc.handler.MessageContext context) {
    System.out.println("ClientHandler: In handleRequest");
    return true;  }

public boolean handleResponse(javax.xml.rpc.handler.MessageContext context) {
    System.out.println("ClientHandler: In handleResponse");
    return true;  }

public boolean handleFault(javax.xml.rpc.handler.MessageContext context) {
    System.out.println("ClientHandler: In handleFault");
    return true;  }

public void init(javax.xml.rpc.handler.HandlerInfo config) { }

public void destroy() {  }

public javax.xml.namespace.QName[] getHeaders() {
    return null;  }
}

El código de la clase handler servidor se muestra en el siguiente ejemplo:

package sample;
public class ServerHandler implements javax.xml.rpc.handler.Handler {
    public ServerHandler() { }

public boolean handleRequest(javax.xml.rpc.handler.MessageContext context) {
    System.out.println("ServerHandler: In handleRequest");
    return true;  }

public boolean handleResponse(javax.xml.rpc.handler.MessageContext context) {
    System.out.println("ServerHandler: In handleResponse");
    return true;  }

public boolean handleFault(javax.xml.rpc.handler.MessageContext context) {
    System.out.println("ServerHandler: In handleFault");
    return true;  }

public void init(javax.xml.rpc.handler.HandlerInfo config) { }

public void destroy() {  }

public javax.xml.namespace.QName[] getHeaders() {
    return null;  }
}
  1. Compile estas clases utilizando:

    [Windows]%JAVA_HOME%\bin\java -extdirs %WAS_EXT_DIRS% ClientHandler.java ServerHandler.java

    [Linux][AIX][HP-UX][Solaris]$JAVA_HOME/bin/java -extdirs $WAS_EXT_DIRS ClientHandler.java ServerHandler.java

  2. Abre una herramienta de ensamblaje e importe los dos archivos archivadores de empresa (EAR) de ejemplo:
    • [Windows]...\installableApps\WebServicesSamples.ear

      [Linux][AIX][HP-UX][Solaris].../installableApps/WebServicesSamples.ear

    • [Windows]...\installableApps\ApplicationClients.ear

      [Linux][AIX][HP-UX][Solaris].../installableApps/ApplicationClients.ear

  3. Importe las clases handler compiladas en los proyectos de los módulos de ejemplo:
    • Importe sample.ClientHandler en el directorio appClientModule del proyecto AddressBookClient.
    • Importe sample.ServerHandler en el directorio ejbModule del proyecto AddressBookW2JE.
  4. Configure el descriptor de despliegue de cliente para clases handler.

    En este tema se describe cómo configurar el descriptor de despliegue de cliente para clases handler proporcionadas por el usuario.

  5. Configure el descriptor de despliegue webservices.xml para las clases handler.

    En esta sección se explica cómo configurar el descriptor de despliegue webservices.xml para clases de manejadores proporcionados por el usuario.

  6. Guarde los cambios y exporte los archivos EAR.
  7. Desinstale la aplicación WebServicesSamples.ear del servidor si ya está instalada.
  8. Instale la nueva aplicación WebServicesSamples.ear.
  9. Inicie el servidor.
  10. Ejecute el cliente:

    launchClient ApplicationClients.ear -CCjar=AddressBookClient.jar

    Cuando se ejecuta el cliente, la salida que aparece en la consola es parecido a lo siguiente. Los mensajes de los manejadores (handlers) se muestran en negrita.

    	IBM WebSphere Application Server		J2EE Application Client Tool
    		Copyright IBM Corp., 1997-2003
    		WSCL0012I: Procesando argumentos de línea de mandatos.
    		WSCL0013I: Inicializando el J2EE Application Client
    	Environment.
    		WSCL0035I: La inicialización de J2EE Application Client 
    		Environment ha finalizado.
    		WSCL0014I: Invocando la clase de cliente de aplicación 
    	com.ibm.websphere.samples.webservices.addr.AddressBookClient
    		>> Querying address for 'Purdue Boilermaker' using port
    	AddressBookW2JE
    		ClientHandler: In handleRequest
    		ClientHandler: In handleResponse
    		>> Response is:
                    1 University Drive
                    West Lafayette, IN 47907
                    Phone: (765) 555-4900		>> Querying address for 'Purdue Boilermaker' using port
    	AddressBookJ2WE
    		ClientHandler: In handleRequest
    		ClientHandler: In handleResponse
    		>> Response is:
                    2 University Drive
                    West Lafayette, IN 47907
                    Phone: (765) 555-4900		>> Querying address for 'Purdue Boilermaker' using port
    	AddressBookJ2WB
    		ClientHandler: In handleRequest
    		ClientHandler: In handleResponse
    		>> Response is:
                    3 University Drive
                    West Lafayette, IN 47907
                    Phone: (765) 555-4900		>> Querying address for 'Purdue Boilermaker' using port AddressBookW2JB
    		ClientHandler: In handleRequest
    		ClientHandler: In handleResponse
    		>> Response is:
                    4 University Drive
                    West Lafayette, IN 47907
                    Phone: (765) 555-4900

    Para el cliente, la clase handler se configura para cada referencia a servicio, no para cada puerto. El ejemplo AddressBook tiene cuatro puertos, pero sólo una referencia a servicio, por consiguiente, ClientHandler maneja solicitudes y respuestas en todos los puertos.

Si se consulta el archivo de registro del servidor, contiene los siguientes datos:

[9/24/03 16:39:22:661 CDT] 4deec1c6 WebGroup      I SRVE0180I: 
[HTTP router for AddressBookW2JE.jar] [/AddressBookW2JE] [Servlet.LOG]: 
AddressBook: init
[9/24/03 16:39:23:161 CDT] 4deec1c6 SystemOut     O ServerHandler: In handleRequest
[9/24/03 16:39:23:211 CDT] 4deec1c6 SystemOut     O ServerHandler: In handleResponse

Resultados

Se han configurado los descriptores de despliegue para las clases de manejador. Los descriptores de despliegue son necesarias para que WebSphere Application Server pueda procesar las solicitudes de servicios web de entrada.

Qué hacer a continuación

Despliegue el archivo EAR que se ha configurado y habilitado para servicios web. A continuación, pruebe la aplicación para asegurarse de que funcione dentro del entorno de WebSphere Application Server.


Icon that indicates the type of topic Reference topic



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