miércoles, 24 de mayo de 2017

Como eliminar WS-Headers en BPEL 12c


    En Oracle SOA Suite 12c, el componente WS-Binding suele incluir alguno de los siguientes elementos de direccionamiento (llamados WS-Addressing) en el Header del Mensaje SOAP:

    • wsa:To
    • wsa:Action
    • wsa:MessageID
    • wsa:RelatesTo
    • wsa:ReplyTo

Aunque el mensaje SOAP generado por la SOA Suite es totalmente compatible con las especificaciones de un mensaje SOAP, existen implementaciones por parte de los proveedores de servicios que no entienden estos encabezados de direccionamiento (WS-Addressing) cuando se incluyen en el mensaje  de solicitud (request) para operaciones síncronas. Es por esto que la invocación a los web service falla.


Para aumentar la interoperabilidad, se ha introducido la propiedad oracle.soa.ws.outbound.omitWSA para el elemento <binding.ws/> del archivo composite.xml.

Esta propiedad permite opcionalmente evitar que se generen los encabezados WS-Addressing en el mensaje de solicitud (request) cuando se establece su valor en true. El valor predeterminado es false.



¡Manos a la obra!

Para Request

1) - Agregar la propiedad oracle.soa.ws.outbound.omitWSA bajo la etiqueta <binding.ws/> en la referencia del web service externo, en el archivo composite.xml:

<property name="oracle.soa.ws.outbound.omitWSA" type="xs:boolean"
many="false" override="may">true</property>



2) - Guardar los cambios y re-deployar el composite.



Para Response

En SOA Suite 12c, el componente WS-Binding incluye los elementos de direccionamiento (WS-Addressing) de forma predeterminada en los mensajes de respuesta (response).

Sin embargo, hay implementaciones de los consumidores de servicios que no entienden los elementos de direccionamiento (WS-Addressing) cuando se incluyen en el mensaje de respuesta (response) en escenarios síncronos de solicitud y respuesta. Es por esto que la invocación falla.

Para aumentar la interoperabilidad con los clientes (consumidores) que no admiten elementos de direccionamiento (WS-Addressing) en los SOAP Headers, se ha introducido la propiedad denominada oracle.soa.addressing.response.enabled.

Dicha propiedad permite opcionalmente evitar que se generen los elementos de direccionamiento (WS-Addressing) en el mensaje de respuesta (response) cuando se establece su valor en true. El valor predeterminado es false.


1) - Establecer la propiedad oracle.soa.addressing.response.enabled en el archivo composite.xml de la siguiente manera:

<property name="oracle.soa.addressing.response.enabled" type="xs:boolean"
many="false" override="may">false</property>



2) - Guardar los cambios y re-deployar el composite.



Comprobando los cambios

Para poder realizar un log de los mensajes SOAP que se intercambian entre los consumidores/proovedores con el composite y poder de esta manera visualizar correctamente dichos mensajes, se recomienda leer el articulo anterior donde se trata este tema:

https://soajp.blogspot.com/2017/05/logear-soap-envelope-de-los-mensajes.html

Mensaje SOAP Request CON WS-Addressing:
 


Mensaje SOAP Request SIN WS-Addressing:

No hay comentarios:

Publicar un comentario