HEADER_lecciones_de_software

¿Cómo consumir servicios web SOAP 1.2 desde IIB 10?

por David Cuadros, el 20 de febrero de 2019

SOAP

Uno de los grandes esfuerzos de la arquitectura SOA es la definición de la arquitectura y el gobierno del modelo de integración empresarial por medio de estándares de industria. Con esto se busca acercar a las empresas a la realización del concepto de interoperabilidad intrínseca, que maximice el reuso de sus servicios. De esta forma es posible incrementar el retorno de inversión, gracias al ahorro en tiempo de desarrollo y a la agilidad en la entrega de iniciativas de negocio basadas en servicios.

En este modelo de integración empresarial a menudo nos encontramos con la necesidad de integrar aplicaciones expuestas en protocolos SOAP Version 1.2. Este es un protocolo liviano destinado a intercambiar información estructurada en un entorno descentralizado y distribuido. Utiliza tecnologías XML para definir una estructura de mensajería extensible que proporciona una construcción de mensaje que se puede intercambiar a través de una variedad de protocolos subyacentes. El marco ha sido diseñado para ser independiente de cualquier modelo de programación particular y otra semántica específica de implementación. Entre sus principales características se encuentran:

  • Modelos claros de procesamiento y extensibilidad, mayor interoperabilidad.
  • Mejor integración web : mejor integración con estándares XML y la arquitectura de la Web.
  • Más versátil : marco vinculante que proporciona independencia de protocolo.
  • Más rápido : basado en XML Infoset que permite la optimización del rendimiento.

En este artículo podrás aprender una de las maneras más adecuadas de construir servicios de integración que permitan consumir servicios web SOAP 1.2 con IBM Integration Bus, versión 10.

Nodos para el consumo de servicios web

Los nodos HTTP y SOAP se pueden usar para interactuar con servicios web. Normalmente, podemos utilizar nodos SOAP cuando trabajamos con servicios web basados en SOAP.                                                                                                                                                                                                                                                                                                                                   nodo http request                                        Nodo SOAP Request           
Nodo HTTP Request                  Nodo SOAP Request

Para los servicios web basados en SOAP, existen varias ventajas si utilizamos los nodos SOAP y el dominio de mensaje SOAP en lugar de los nodos de transporte HTTP y el dominio de mensaje XMLNSC. Algunas de las ventajas son:

  • Soporte para WS-Addressing, WS-Security y encabezados SOAP.
  • Un formato de árbol lógico SOAP común, independiente del formato de bitstream.
  • Comprobación del tiempo de ejecución contra WSDL.
  • Procesamiento automático de SOAP con archivos adjuntos (SwA).
  • Procesamiento automático del Mecanismo de optimización de transmisión de mensajes (MTOM).

Aunque los nodos HTTP pueden procesar mensajes SwA, debemos usar el dominio de mensaje MIME y diseñar su flujo para manejar los archivos adjuntos explícitamente, y usar lógica personalizada para extraer y analizar el SOAP.

Los casos en los que podría ser mejor utilizar nodos HTTP incluyen:

  • Flujos de mensajes que interactúan con servicios web que usan estándares diferentes, como REST o XML-RPC.
  • Flujos de mensajes que nunca usan WS-Addressing, WS-Security, SwA o MTOM.

Teniendo en cuenta los argumentos anteriores, debemos utilizar los nodos SOAP para consumir servicios web SOAP 1.2, para realizar este consumo es necesario que tengamos en cuenta:

  • En modalidad de pasarela, los nodos SOAP envían el mensaje SOAP 1.1 de forma predeterminada, aunque también aceptan los mensajes SOAP 1.2 de entrada. Para enviar un mensaje SOAP 1.2 de salida, establezca el campo SOAP.Context para indicar que SOAP 1.2 es necesario. Por ejemplo, para establecer este campo utilizando ESQL:

3. Soap.context-1

  • URL del backend y SOAP Action:

     SOAP Action
  • La cantidad de segundos que el cliente espera a que un servidor remoto responda con un acuse de recibo de 'mensaje recibido'. El tiempo de espera puede tardar un segundo más que el valor especificado. Si no recibe ninguna respuesta en estos momentos, se genera una excepción de error y se propaga al terminal de anomalías:

    5. Mensaje recibido
  • Debemos tener en cuenta la codificación de la mensajería, colocar los Encoding correspondientes:

    6. codificación mensajería-1
  • El nodo SOAPRequest tiene una propiedad llamada WS-Addressing, para procesar la información de WS-Addressing que está presente en el mensaje entrante.


    7. SOAP Request

 

Cabeceras de los nodos SOAP:

A Continuación revisaremos una representación en forma de diagrama del árbol del dominio SOAP el cual permite acceder a partes clave del mensaje SOAP de una forma práctica:

Arbol de dominio SOAP

 De acuerdo a lo que hemos revisado en este artículo, la manera que se recomienda para consumir servicios web con protocolo SOAP versión 1.2 con la herramienta IBM Integration Bus versión 10, es implementando los nodos SOAP desarrollando la codificación respectiva.

Nueva llamada a la acción

Lecciones Pragma

Lecciones en Academia Pragma

Aquí encontrarás tutoriales técnicos para que apliques en temas de desarrollo de software, cloud, calidad en software y aplicaciones móviles. 

También puedes visitar nuestro Blog con contenido actual sobre Transformación Digital, Marketing, Conocimiento de Usuario y más. 

Blog

Suscríbete a la academia

Descarga la Guía para trabajar con ambientes IBM Websphere Portal