En el ejemplo, la operación se extrae del mensaje de solicitud SOAP y se utiliza un servicio configurable definido por el usuario para recuperar el URL del proveedor de servicio web.
El asistente del ejemplo sustituye el URL en los nodos SOAPRequest en los archivos de archivador de intermediario (bar) de flujo de consumidor. Si opta por volver a crear los archivos bar, es posible que estos valores se borren y que el flujo de pasarela no se invoque.
El ejemplo Pasarela de servicios web muestra las siguientes tareas:
Antes de empezar, debe familiarizarse con los ejemplos existentes sobre los que se basa este ejemplo:
El siguiente diagrama muestra el flujo de mensajes Pasarela de servicios web:
La tabla siguiente muestra los nodos en el flujo de mensajes:
Tipo de nodo | Nombre de nodo |
---|---|
SOAPInput | GatewayInput |
JavaCompute | ComputeURL |
SOAPRequest | SOAP Request |
SOAPReply | GatewayReply |
El nodo SOAPInput opera en la modalidad de pasarela y acepta solicitudes de los flujos de consumidor del ejemplo Libreta de direcciones o del ejemplo Nodo SOAP.
El nodo JavaCompute obtiene el nombre de operación del mensaje de solicitud entrante y lo almacena en csName. El asistentes de configuración del ejemplo crea un servicio configurable definido por el usuario denominado Gateway, y una propiedad que coincide con los nombres de operación para dos flujos de consumidor de los ejemplos existentes. BrokerProxy se utiliza para obtener el valor del servicio configurable y establecer el URL para la solicitud en el entorno local.
List nodeset = (List)message.getRootElement().evaluateXPath("SOAP/Body/*[1]"); String csName=((MbElement)(nodeset.get(0))).getName(); String URL = null; try { //Obtener el proxy del intermediario BrokerProxy bp = BrokerProxy.getLocalInstance(); //Buscar el URL de un servicio configurable URL = bp.getConfigurableServiceProperty("UserDefined/Gateway/"+csName); } catch (Exception e) { URL="/"; } //Establecer el WebServiceURL crearndo la vía de acceso si no existe le.getRootElement().evaluateXPath("?Destination/?SOAP/?Request/?Transport/?HTTP/?WebServiceURL[set-value('"+URL+"')]");
El nodo SOAPRequest envía la solicitud al flujo de proveedor apropiado.
El nodo SOAPReply devuelve la respuesta al flujo de consumidor que llama.
Los mensajes SOAP se generan a través de los flujos de cliente y proveedor existentes. El flujo de pasarela utiliza el nombre de operación para direccionarlo al proveedor correcto.
Una vez que haya ejecutado el ejemplo, es posible que desee ampliarlo añadiendo otro proveedor de servicios web. Dado que el servicio configurable se utiliza para almacenar el URL para el proveedor, todo los que debe hacer es añadir una propiedad con el nombre de una operación de servicio existente y el valor establecido en el URL.