Acerca del ejemplo Pasarela de servicios web

El ejemplo Pasarela de servicios web muestra cómo utilizar nodos SOAP, en modalidad de pasarela, para invocar y proporcionar un servicio web. Este ejemplo se basa en dos ejemplos existentes (Nodos SOAP y Libreta de direcciones) y modifica el URL en los nodos SOAPRequest de modo que todas las solicitudes se direccionen a través de un nuevo flujo de pasarela que reenvía la solicitud al proveedor de servicios web apropiado.

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.

Diagrama que ilustra la configuración de este ejemplo

El ejemplo Pasarela de servicios web muestra las siguientes tareas:

Antes de empezar

Antes de empezar, debe familiarizarse con los ejemplos existentes sobre los que se basa este ejemplo:

El Flujo de mensajes

El siguiente diagrama muestra el flujo de mensajes Pasarela de servicios web:

Captura de pantalla del flujo de mensajes de pasarela 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

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.

Ampliar el ejemplo

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.

Volver a la página inicial del ejemplo