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.
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.
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>
El diagrama siguiente muestra el 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.
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.
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:
La ruta es como la descrita anteriormente, pero con las siguientes diferencias:
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.