2012-03-04 1 views

Respuesta

110

JTA es una API general para gestionar transacciones en Java. Le permite iniciar, comprometer y deshacer transacciones de una manera neutral de recursos. El estado transaccional normalmente se almacena en TLS (Thread Local Storage) y se puede propagar a otros métodos en una pila de llamadas sin necesidad de que se pase un objeto de contexto explícito. Los recursos transaccionales pueden unirse a la transacción en curso. Si hay más de un recurso participando en dicha transacción, al menos uno de ellos debe ser un recurso denominado XA.

A resource local transaction es una transacción que usted tiene con un único recurso específico que utiliza su propia API específica. Por lo general, una transacción de este tipo no se propaga a otros métodos en una pila de llamadas y se requiere pasar algún objeto de contexto explícito. En la mayoría de las transacciones locales de recursos no es posible tener múltiples recursos participando en la misma transacción.

Utilizaría una transacción local de recursos en, por ejemplo, código JDBC de bajo nivel en Java SE. Aquí el objeto de contexto se expresa mediante una instancia de java.sql.Connection. Otros ejemplos de transacciones locales de recursos son los desarrolladores que crean aplicaciones empresariales alrededor de 2002. Dado que los gestores de transacciones (utilizados por JTA) eran caros, de código cerrado y complicados de configurar en esa época, las personas optaban por las variantes locales de recursos más baratas y fáciles de obtener.

Utilizaría una transacción JTA básicamente en cualquier otro escenario. Los servidores muy simples, pequeños, gratuitos y de código abierto como TomEE (25MB) o GlassFish (35MB) tienen soporte de JTA listo para usar. No hay nada que configurar y solo funcionan.

Finalmente, tecnologías como EJB y Spring hacen que incluso JTA sea más fácil de usar ofreciendo declarative transactions. En la mayoría de los casos, se recomienda utilizarlos ya que son más fáciles, más limpios y menos propensos a errores. Tanto EJB como Spring pueden usar JTA bajo las cubiertas.

+3

+1 para explicar la historia y el desarrollo de los usos de JTA (EJB, Spring, etc.). – Marco

1

La Java Transaction API (JTA) es una de las API Java Enterprise Edition (Java EE) que permite realizar transacciones distribuidas a través de múltiples recursos XA en un entorno Java.

-1

aplicación J2EE incluye suppoart fot DT a través de 2 especificaciones
JTA ---> aplicación Java Transacción API.highe nivel y siempre está habilitado
JTS ---> Java Transaction Service.

1

El tipo de transacción debe establecerse en "RESOURCE_LOCAL" para la aplicación Java SE y en "JTA" para la aplicación Java EE. "RESOURCE_LOCAL" puede funcionar bien en alguna aplicación web implementada en Tomcat, pero puede causar problemas cuando ejecuta su aplicación en entorno glassfish.

Si está trabajando en transacciones distribuidas, debe usar "JTA" como administrador de transacciones.

Cuestiones relacionadas