Soy nuevo en JTA y sus gerentes de transacciones subyacentes. ¿Alguien puede explicar los pros/contras de cada uno de estos? Siéntase libre de agregar otros que no figuran en el título.
administradores de transacciones independientes yo sepa incluyen Bitronix, SimpleJTA, Tyrex (muertos?), JOTM (utilizado en Jonas), GeronimoTM/Jencks (utilizado en Geronimo), JBossTS (utilizado en JBoss) y Atomikos.
Nunca los he probado todos extensivamente (y esto es lo que tendrías que hacer si tienes que elegir uno), así que no puedo proporcionar un pros/contra exhaustivo (y eso requeriría algo de trabajo). Pero aquí hay algunos enlaces:
Por si acaso, aquí es mi punto de vista muy personal:
- He visto muchas quejas sobre JOTM.
- Creo que a GeronimoTM/Jencks le falta documentación.
- SimpleJTA no implementa JTS y no está activo.
- Bitronix es documentación decente pero no ofrece soporte.
- Atomikos es un producto impresionante, bien documentado y que ofrece soporte.
- JBossTS aka ArjunaTS es definitivamente un producto maduro (ver el announcement of the acquisition para un poco de historia) y ofrece soporte.
Personalmente, me gustaría preseleccionar Atomikos y JBossTS y ponerlos a prueba si tengo que elegir uno.
Además, ¿los principales servidores de aplicaciones (WebSphere, JBoss, Glassfish) no tienen su propio administrador de transacciones compatible con JTA?
Por supuesto que sí, JTA es parte de la especificación Java EE, un servidor Java EE tiene que soportarlo.
En esos entornos, ¿seguiría utilizando estas implementaciones de terceros?
No, utilizaría el administrador de transacciones provisto (por simplicidad, soporte, etc.).
Gracias por esta útil respuesta. En ocasiones, para fines de prueba y demostración, nuestra aplicación debe ejecutarse en Jetty o Tomcat. ¿Atomikos y JBossTS seguirán funcionando en esos entornos? De hecho, ¿esa es la razón de estos administradores de transacciones de terceros? ¿Para obtener un buen soporte de transacciones fuera de un servidor de aplicaciones completo? – HDave
@HDave: los gestores de transacciones independientes son útiles cuando necesita soporte de transacciones globales (es decir, cuando maneja más de un recurso transaccional) y su entorno no ofrece soporte para esto (por ejemplo, una aplicación independiente, un contenedor de servlet). En tales entornos, usaría Spring para facilitar la configuración (y JBossTS y Atomikos cabrían). –
Jencks es, de hecho, un contenedor JCA que utiliza GeronimoTM como administrador de transacciones JTA ... – pgras