Acerca del ejemplo Conectividad de WebSphere Service Registry and Repository

El ejemplo Conectividad de WebSphere Service Registry and Repository (WSRR) se basa en un escenario en el que una empresa desea utilizar WebSphere Service Registry and Repository para elegir dinámicamente un servicio web que se invocará en tiempo de ejecución. Aunque el ejemplo muestra el uso del nodo EndpointLookup para recuperar archivos WSDL del Registro de servicios para llamar a un servicio web, el Registro de servicios también puede almacenar otros tipos de documentos que se pueden recuperar utilizando el nodo RegistryLookup. Aunque los dos nodos se utilizan para recuperar tipos diferentes de documentos del Registro de servicios, la configuración de ambos nodos es la misma y puede utilizar la configuración de ejemplo de este ejemplo para utilizar el nodo RegistryLookup.

El siguiente diagrama muestra la arquitectura de utilizar la conectividad WebSphere Service Registry and Repository dentro de un flujo de mensajes.

Una ilustración de la arquitectura de conectividad de WebSphere Service Registry and Repository.

El ejemplo de Conectividad de WebSphere Service Registry and Repository muestra las siguientes tareas:

El servicio web del ejemplo, servicios DemoCustomer, acepta peticiones updateCustomer y devuelve mensajes updateCustomerResponse. Un requisito común de un ESB (Enterprise Service Bus) y el Registro es facilitar la invocación de servicios cuando existan dos o más versiones del mismo servicio. El ESB debe poder llamar al servicio adecuado basándose en la petición. El Registro debe poder acomodar múltiples servicios de manera que puedan ser descubiertos y utilizados. En este ejemplo, existen dos versiones del servicio web DemoCustomer, ambas implementadas utilizando flujos de mensajes que se ejecutan en WebSphere Message Broker. La versión 1.0 se invoca cuando se utilizan las propiedades estáticas del nodo EndpointLookup y la versión 2.0 se invoca cuando el mensaje SOAP de entrada contiene información de alteración temporal en tiempo de ejecución.

Los mensajes

Se proporcionan tres mensajes de entrada para ejecutar el ejemplo de Conectividad de WebSphere Service Registry and Repository:

El mensaje siguiente es el mensaje SOAP que llama al servicio web que determinan las propiedades estáticas del nodo EndpointLookup (versión 1.0):

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <Request>
      <Verb>UpdateCustomer</Verb>
      <Data>
        <Customer>ABC</Customer>
      </Data>
    </Request>
  </soapenv:Body>
</soapenv:Envelope>

El mensaje siguiente es el mensaje SOAP que llama al servicio web que determinan las alteraciones temporales en tiempo de ejecución (versión 2.0). Este mensaje es el mismo que el anterior, pero con la adición del código Version, que se utiliza en tiempo de ejecución para recuperar la versión 2.0 del WSDL del Registro de servicios:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope 	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <Request>
      <Version>2.0</Version>
      <Verb>UpdateCustomer</Verb>
      <Data>
        <Customer>ABC</Customer>
      </Data>
    </Request>
  </soapenv:Body>
</soapenv:Envelope>

El mensaje siguiente es el mensaje SOAP con una propiedad Version que no coincide con ningún documento del Registro de servicios:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope 	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <Request>
      <Version>3.0</Version>
      <Verb>UpdateCustomer</Verb>
      <Data>
        <Customer>ABC</Customer>
      </Data>
    </Request>
  </soapenv:Body>
</soapenv:Envelope>

Los flujos de mensajes

El diagrama siguiente muestra el flujo de mensajes principal.

Captura de pantalla del flujo de mensajes principal.

Tipo de nodo Nombre de nodo
MQInput WSRR_IN
MQOutput WSRR_OUT
Compute SetVersion, InformFailure, InformWSResult, InformNoMatch
EndpointLookup Endpoint Lookup One
SOAPRequest SOAP Request

El siguiente diagrama muestra el flujo del servicio web. Se muestran dos versiones de este flujo de servicio Web. La diferencia entre las dos versiones es el nodo Compute, que devuelve una respuesta distinta para identificar a qué versión se ha llamado.

Una captura de pantalla del flujo de servicio web.

Tipo de nodo Nombre de nodo
SOAPInput SOAP DempCustomer
Compute Create WS Response
SOAPReply SOAP Reply

Para obtener más información sobre los nodos que se utilizan en el ejemplo de Conectividad WSSR, consulte Nodos incorporados en la documentación de WebSphere Message Broker.

Ruta seguida por el primer mensaje (versión estática)

Cuando pone el primer mensaje en la cola de entrada, el mensaje pasa por los nodos como se describe más adelante en este tema. Si ninguna de las colas se ha inhabilitado, el mensaje no puede seguir esta vía de acceso.

Los nodos del flujo de mensajes principal tienen las siguientes funciones:

  1. WSRR.IN : El nodo obtiene el mensaje de entrada de la cola de entrada.
  2. SetVersion : Este nodo Compute altera temporalmente la propiedad Version. Puesto que no hay ningún código Version en este mensaje, no se sustituye nada en el entorno local y, por consiguiente, se utiliza la propiedad estática Version del nodo EndpointLookup para recuperar la versión 1.0 del WSDL del Registro de servicios.
  3. EndpointLookupOne: Este es el nodo EndpointLookup que se conecta al Registro de servicios y recupera el documento WSDL solicitado (la versión 1.0 como se define en la configuración del nodo EndpointLookup). El mensaje se propaga a uno de los tres nodos conectados, según lo determine la recuperación satisfactoria (o no) de un documento WSDL coincidente del Registro de servicios. Puesto que el nodo EndpointLookup está configurado para recuperar sólo "Un" documento WSDL coincidente, no es necesario que este nodo vaya seguido de un nodo Compute. Si el nodo EndpointLookup está configurado para recuperar "Todos" los documentos WSDL coincidentes, este nodo debe ir seguido de un nodo Compute para consultar los documentos recuperados. Puede utilizar el nodo Compute para seleccionar el documento a enviar al nodo SOAPRequest, como se muestra en la figura de arquitectura anterior.
  4. InformFailure : El mensaje se propaga a este nodo si WebSphere Message Broker encuentra errores al conectarse o mientras está conectado al Registro de servicios.
  5. SOAPRequest : El mensaje se propaga a este nodo si el nodo EndpointLookup ha recuperado satisfactoriamente el documento WSDL solicitado del Registro de servicios. El nodo envía el mensaje SOAP al servicio web determinado por el punto final del WSDL.
  6. InformWSResult : Una vez que se ha invocado satisfactoriamente el servicio Web, este nodo convierte las cabeceras HTTP del mensaje en cabeceras MQMD para propagar la respuesta al nodo MQOutput.
  7. InformNoMatch : El mensaje se propaga a este nodo si el Registro de servicios no puede encontrar un documento WSDL coincidente.
  8. WSRR.OUT : Este nodo coloca el mensaje en la cola de salida WSRR.OUT.
Los nodos del flujo de servicio web tienen las siguientes funciones:
  1. SOAPDemoCustomerMB : este nodo SOAPInput Input recibe el mensaje SOAP del flujo de mensajes principal.
  2. Compute : Este nodo genera una respuesta.
  3. SOAPReply : Este nodo envía la respuesta a la aplicación de llamada, el nodo SOAPRequest.

Ruta seguida por el segundo mensaje (versión en tiempo de ejecución)

La ruta es como la descrita anteriormente, pero con las siguientes diferencias:

Ruta seguida por el tercer mensaje (no hay coincidencias)

La ruta es como la descrita anteriormente, pero con las siguientes diferencias:

La finalidad de este ejemplo es leer un mensaje de entrada y conectarse al Registro de servicios para recuperar un documento WSDL. Si se encuentra una coincidencia, se invocará el servicio web pertinente y grabará el mensaje en otra cola. Si no se encuentra ninguna coincidencia, graba el mensaje "No match" en la cola.

Para obtener más información, consulte WebSphere Service Registry and Repository en la documentación de WebSphere Message Broker.

Volver a la página inicial del ejemplo