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
- XA es un estándar para manejar transacciones distribuidas: https://www2.opengroup.org/ogsys/jsp/publications/PublicationDetails.jsp?catalogno=c193
- XA también es el estándar utilizado por Java/JEE.
- Las aplicaciones que usan Transacciones distribuidas XA (o globales) usan:
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
- El estándar adoptado WS-TX, que está compuesto de 3 especificaciones (http://www.oasis-open.org/news/oasis-news-2007-05-08.php).
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:
Weblogic:
http://docs.oracle.com/cd/E17904_01/web.1111/e13734/transaction.htm



Deja un comentario