Un poco de Transaccionalidad distribuida

Se conoce por transaccionalidad distribuida aquella en la que intervienen dos o más recursos transaccionales de forma coordinada.

Los dos estándares (no sólo del mundo Java) que los soportan:

  • Transaccionalidad distribuida XA: estándar para manejar transacciones
  • Transaccionalidad WS-Transaction: estándar para manejar transacciones dentro del mundo de los Web Services

Transaccionalidad distribuida XA

Uno o más Resource Managers (RM) provee acceso a los recursos transaccionales (como base de datos). Deben permitir commit y rollback.

Un Transaction Manager (TM): coordina las transacciones parte de la transacción distribuida XA, comunicando con los RMs para controlar cada una de las transacciones.

  • El proceso para ejecutar una transacción global usa two-phase commit (2PC):

Primero el TM indica a todos los RMs que se preparen para hacer commit

El TM dice a los RMS que hagan commit. Si algún RM indica que no puede hacerlo se pide a todos los RMs que hagan rollback.

  • En Java pueden funcionar en Transacciones XA:

Recursos JMS: aunque es opcional en la implementación del Servidor JMS (MQ lo soporta)

Recursos Bases de Datos: debe soportarlo la base de datos y el driver

  • JTA (Java Transaction API) es el API Java para gestionar transacciones XA.

En entornos JEE el soporte JTA lo da el Servidor de Aplicaciones

En entornos Java el soporte JTA lo da un Transaction Manager, existen varios opensource como Java Open Transaction Manager (JOTM), JBoss TS, Bitronix Transaction Manager (BTM), Atomikos (ahora llamado Atomikos TransactionsEssentials)

  • Las bases deben estar configuradas para funcionar en modo XA ,por ejemplo en Oracle:

Transaccionalidad WS-Transaction

  • En el contexto de los Web Services se han hecho diversos esfuerzos para incorporar transacciones, los más importantes:

Business Transaction Protocol (BTP): OASIS – 2001

WS-TX: Web Services Transactions desarrollado por IBM, Microsoft y BEA en 2002

Web Services Transaction Management: Arjuna, Fujitsu, IONA, Oracle, Sun en el 2003

Especificación: http://public.dhe.ibm.com/software/dw/specs/ws-tx/WS-AtomicTransaction.pdf

WS-Coordination (WS-C): describe un framework para proveer protocolos que coordinen las aplicaciones distribuidas

WS-AtomicTransaction (WS-AT): Define un tipo de coordinación Atomic Transaction, orientado a actividades con semántica “todo o nada”.

  • Las tareas de cada participante se ejecutan de forma “tentativa”
  • Cada participante, al finalizar su tarea, pregunta al coordinador el resultado de la transacción. No hace los resultados visibles ni persistentes
  • Si todos los participantes terminaron con éxito sus tareas, el coordinador los avisa para que hagan un commit
  • Los mensajes dentro de la actividad deben propagar un contexto de este tipo

WS-BusinessActivity (WS-BA): es un protocolo de compensación diseñado para interacciones long-running como un flujo BPEL.

  • El estándar WS-TX en el mundo Java está soportado de forma limitada y sólo por algunos productos:

Axis2 WS en teoría lo soporta a través de Apache Kandula2, aunqueKandula2aún no está implementado y sigue en modo propuesta:

http://wiki.apache.org/ws/FrontPage/ws-kandula/kandula2

WebSphere Application Server:

http://pic.dhe.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Fcjta_wstran.html

Weblogic:

http://docs.oracle.com/cd/E17904_01/web.1111/e13734/transaction.htm

Deja un comentario