Visión general de Web Services Atomic Transaction

El soporte de transacción atómica de servicios Web (WS-AT) en el servidor de aplicaciones proporciona un servicio de transacciones de calidad para los entornos de servicios web. Las aplicaciones de servicios web distribuidas y los recursos que utilizan pueden formar parte de las transacciones globales distribuidas. Ahora WS-AT también se soporta en Liberty.

Los protocolos de servicios web proporcionan maneras estándares de definir las aplicaciones de servicios web y las aplicaciones pueden utilizarlos para funcionar independientemente del producto, plataforma o lenguaje de programación que se utilice. El soporte WS-AT es una implementación de las especificaciones siguientes en el servidor de aplicaciones. Estas especificaciones definen un conjunto de servicios web que permiten a las aplicaciones participar en transacciones globales que se distribuyen en el entorno heterogéneo de los servicios web.

El soporte WS-AT es un protocolo de interoperatividad que no presenta interfaces de programación nuevas para el soporte de transacciones. El uso de aplicaciones empresariales estándar de la interfaz JTA (Java™ Transaction API) UserTransaction proporciona la demarcación de transacciones globales. Si un componente de aplicación que se ejecuta bajo una transacción global realiza una solicitud de servicios web, se propaga un WS-AT CoordinationContext de forma implícita a los servicios web de destino, pero sólo si se han establecido los descriptores de despliegue de aplicaciones apropiados, tal como se describe en el tema sobre la configuración de atributos de despliegue transaccionales.

Si el servidor de aplicaciones es el sistema que aloja el punto final de destino de una solicitud de servicios web que contiene un contexto de coordinación WS-AT, el servidor de aplicaciones establece de forma automática una transacción JTA subordinada en el entorno de tiempo de ejecución de destino que se convierte en el contexto transaccional bajo el que se ejecuta la aplicación de servicios web de destino.

En la siguiente figura se muestra un contexto de transacción compartido entre dos servidores de aplicaciones para una solicitud de servicios web que contiene un WS-AT CoordinationContext.

Figura 1. Contexto de transacción compartido entre dos servidores de aplicaciones
La transacción atómica incluye el cliente de servicios web y sus recursos XA en el servidor de aplicaciones 1 y la aplicación de servicios web y sus recursos XA en el servidor de aplicaciones 2.

De forma predeterminada, si habilita la característica WS-AT y empieza la transacción en el lado del cliente en Liberty, todas las operaciones de servicios web que se incluyen en la transacción de cliente se añaden a la transacción global. Sin embargo, si ejecuta cualquier código fuera del ámbito de la transacción global actual, utilice UOWManager con el tipo UOWSynchronizationRegistry.UOW_TYPE_LOCAL_TRANSACTION . Esto tendrá el efecto de suspender y reanudar la transacción global en ese fragmento de código.

Tabla 1. Condiciones en las que puede o no puede utilizar la transacción global WS-AT en Liberty para la salida de cliente
Si la característica WS-AT está habilitada Si existe la transacción Si existe la aserción de política en WSDL Si la transacción global WS-AT está habilitada
No No No No
No No No, si Liberty genera una excepción
No No No
No No, si Liberty genera una excepción
No No No
No Sí (wsp: Opcional="false") No, si Liberty genera una excepción
Sí (wsp: Opcional="true") No
No
Tabla 2. Condiciones en las que puede o no puede utilizar la transacción global WS-AT en Liberty para la entrada de servidor
Si la característica WS-AT está habilitada Si existe un contexto de coordinación en la cabecera SOAP Si existe la aserción de política en WSDL Si la transacción global WS-AT está habilitada
No No No No
No No No
No No No, si Liberty genera una excepción
No No, si Liberty genera una excepción
No No No
No Sí (wsp: Opcional="false") No, si Liberty genera una excepción
Sí (wsp: Opcional="true") No
No

Diseño de la aplicación

WS-AT es un protocolo de transacciones de compromiso de dos fases y está indicado únicamente para transacciones de corta duración.

WS-AT es más adecuado para distribuir el contexto de transacción entre los servicios web que se despliegan en una sola empresa. Los únicos que transportan el contexto de transacción son los patrones de intercambio de mensajes de solicitud-respuesta, porque el originador (la aplicación o el contenedor) de una transacción tiene que estar seguro de que hayan finalizado todas las tareas empresariales que se ejecutan en esa transacción antes de solicitar la finalización de una transacción. Los servicios web llamados por una solicitud unidireccional nunca se ejecutan bajo la transacción del cliente solicitante.

El efecto de las anomalías de servicio en las transacciones WS-AT es similar al efecto de las excepciones de aplicaciones EJB (Enterprise JavaBeans) en las transacciones, como se describe en la especificación EJB. Si un servicio que se ejecuta bajo la transacción WS-AT de solicitante devuelve un error, el servidor de aplicaciones no marca automáticamente la transacción como de sólo retrotracción. El manejador de excepciones del solicitante elige si la transacción puede continuar y elige si se marca la transacción como de sólo retrotracción. Si el solicitante se ejecuta en el servidor de aplicaciones, pueden utilizarse las API JTA o EJB estándar para marcar la transacción como de sólo retrotracción. El componente de servicio que genera el error podría marcar por sí mismo la transacción como de sólo retrotracción antes de devolver el error. Si la implementación del componente de servicio encuentra una excepción del sistema, habitualmente permite que su contenedor maneje la excepción. Los contenedores del servidor de aplicaciones marcan automáticamente cualquier contexto de transacción recibido como de sólo retrotracción cuando manejan una excepción del sistema generada por una implementación de servicio.


Icono que indica el tipo de tema Tema de concepto

Nombre de archivo: cwlp_dep_wsatoverview_lib.html