Soporte de WSDM (Web Services Business Activity) en el servidor de aplicaciones
Con el soporte de WS-BA (Web Services Business Activity) en el servidor de aplicaciones, los servicios web de diferentes sistemas pueden coordinar actividades que se acoplan más débilmente que las transacciones atómicas. Estas actividades pueden ser difíciles o imposibles de retrotraer de forma atómica y, por lo tanto, requieren un proceso de compensación en caso de que se produzca un error.
- WS-BA es un tipo específico de coordinación que define protocolos para actividades empresariales. Las especificaciones son:
- WS-COOR (Web Services Coordination) especifica un CoordinationContext y un servicio de registro al que los servicios web participantes pueden sumarse para tomar parte en los protocolos ofrecidos por tipos de coordinación específicos. Las especificaciones son:
- Web Services Coordination Versión 1.0
- Web Services Coordination Versión 1.1
- Web Services Coordination Versión 1.2
Además de dar soporte al protocolo de interoperatividad de WS-BA, el servidor de aplicaciones proporciona una interfaz de programación para crear actividades empresariales y manejadores de compensaciones. Con esta interfaz de programación, puede especificar los datos de compensación y comprobar y alterar el estado de una actividad empresarial.
Asimismo, puede utilizar este recurso de compensación con las aplicaciones que no sean servicios web, siempre y cuando éstas sólo requieran la comunicación entre servidores WebSphere Application Server. Consulte los temas relacionados para obtener más información.
Puede configurar las políticas para el protocolo WS-BusinessActivity. Puede configurar si un cliente propaga mientras que un servidor recibe un contexto WS-BA. Para asegurarse de que un cliente siempre envía un contexto WS-BusinessActivity al realizar una solicitud saliente de servicio, debe asociar un conjunto de políticas con el cliente, donde el conjunto de políticas debe incluir el tipo de política WS-Transaction, y este tipo de política debe tener un valor WS-BusinessActivity de Obligatorio. Si sabe que el cliente siempre invoca puntos finales remotos que incluyan el atributo de tipo de política BAAtomicOutcomeAssertion de WS-BusinessActivity, también puede configurar el cliente para que aplique la configuración WS-Policy del proveedor para que el cliente adopte automáticamente la política obligatoria del proveedor.
Para asegurarse de que las solicitudes recibidas por un proveedor de servicios web incluyan un contexto WS-BusinessActivity, debe asociar un conjunto de políticas con el proveedor, donde el conjunto de políticas debe incluir el tipo de política WS-Transaction, y este tipo de política debe tener un valor WS-BusinessActivity de Obligatorio.
Para asegurarse de que un cliente o proveedor nunca utiliza un contexto WS-BusinessActivity, debe asociar un conjunto de políticas con el cliente o proveedor, donde el conjunto de políticas incluya el tipo de política WS-Transaction, y este tipo de política debe tener un valor WS-BusinessActivity de Nunca. Puede utilizar esta configuración para entornos en los que no desea que las solicitudes de servicios web creen un acoplamiento fuerte entre un cliente y un proveedor, por ejemplo cuando hay solicitudes entre empresas.
Si no hay ningún conjunto de políticas asociado con un cliente o proveedor, o bien si el tipo de política WS-Transaction no se incluye en el conjunto de políticas, se utiliza el comportamiento predeterminado de WS-Transaction.
Desarrollo de aplicaciones
No se necesitan tareas de desarrollo específicas para que las aplicaciones de servicios web puedan aprovechar WS-BA.
Para aplicaciones JAX-RPC, cualquier componente EJB (Enterprise JavaBeans) que se ha configurado para ejecutarse bajo un ámbito BusinessActivity propaga automáticamente dicho ámbito cuando efectúa una solicitud de servicios web JAX-RPC saliente. El tiempo de ejecución JAX-RPC da soporte a WS-BA 1.0.
Para las aplicaciones JAX-WS, habilite el soporte WS-BA creando un conjunto de políticas, añada el tipo de política WS-Transaction al conjunto de políticas, configure, si lo desea, el tipo de política y adjunte el conjunto de políticas a la aplicación o el cliente que participará en la comunicación WS-BA. El tiempo de ejecución JAX-WS soporta WS-BA 1.0, WS-BA 1.1, WS-BA 1.2 y la aserción WS-Policy para WS-BA.
Cuando el tiempo de ejecución de JAX-WS recibe una solicitud de entrada, se da soporte a los niveles de especificación de WS-Transaction 1.0, WS-Transaction 1.1 y WS-Transaction 1.2. Si se envía una solicitud JAX-WS saliente, sólo se puede utilizar un nivel de especificación. Si hay disponibles confirmaciones WS-Policy de WS-Transaction, ya sea del WSDL (Web Services Description Language) del servicio web de destino o del tipo de política WS-Transaction del cliente, se utiliza el nivel de especificación que se puede aplicar en el cliente y en el servicio web de destino. Por ejemplo, si el entorno de alojamiento del servicio web de destino sólo soporta WS-Transaction 1.0, se utiliza WS-BA 1.0. Si ambos niveles de especificación están disponibles o si no hay disponibles aserciones WS-Policy de WS-Transaction, se utiliza el nivel de especificación WS-Transaction predeterminado que se establece en los valores del servicio de transacciones.
- Si un cliente no considera la política del proveedor, no envía ningún contexto WS-AT (Web Service Atomic Transaction) o WS-BA. Este comportamiento es equivalente a un valor de configuración de políticas WS-Transaction de Nunca.
- Si un cliente considera la política del proveedor, envía contexto WS-AT o WS-BA si la política del proveedor incluye confirmaciones WS-AT o WS-BA. Este comportamiento es equivalente a un valor de configuración de políticas WS-Transaction de Soporta.
- Un servidor no envía ningún contexto WS-AT o WS-BA. Este comportamiento es equivalente a un valor de configuración de políticas WS-Transaction de Nunca.
Aserciones de política WS-Transaction
Si configura las políticas del protocolo WS-BusinessActivity para un protocolo, esto afecta a las confirmaciones incluidas en cualquier WSDL generado para el servicio web con el que está asociado el tipo de política. La aserción WS-Policy que se utiliza para describir los requisitos de compensación de un cliente o proveedor que utilice WS-BusinessActivity es BAAtomicOutcomeAssertion. Si el tipo de política WS-Transaction tiene un valor WS-BusinessActivity de Obligatorio o Soporte, se incluye una aserción de política en el WSDL.
El servidor de aplicaciones también puede analizar, entender y aplicar estas confirmaciones del WSDL que analiza.
En el ejemplo siguiente se muestra WSDL donde la aserción BAAtomicOutcomeAssertion de WS-BusinessActivity indica que debe invocarse un punto final con el contexto WS-BA incluido en el mensaje de solicitud, y que el contexto esté en formato WS-Transaction 1.0 o 1.1. Hay dos espacios de nombres y dos confirmaciones; uno para cada nivel de especificación WS-Transaction, mediante el operador WS-Policy ExactlyOne para mostrar que el cliente debe elegir qué nivel de especificación desea utilizar.
<wsdl:definitions targetNamespace="bank.example.com"
xmlns:tns="bank.example.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsat11="http://docs.oasis-open.org/ws-tx/wsba/2006/06"
xmlns:wsat10="http://schemas.xmlsoap.org/ws/2004/10/wsba"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsp:Policy wsu:Id="BAPolicy">
<wsp:ExactlyOne>
<wsat11:BAAtomicOutcomeAssertion />
<wsat10:BAAtomicOutcomeAssertion />
<!-- omitted assertions -->
</wsp:ExactlyOne />
</wsp:Policy>
<!-- omitted elements -->
<wsdl:binding name="BankBinding" type="tns:BankPortType">
<!-- omitted elements -->
<wsdl:operation name="TransferFunds">
<wsp:PolicyReference URI="#BAPolicy" wsdl:required="true"/>
<!-- omitted elements -->
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>