Hibernate EntityManager + JOTM: no se utilizan las transacciones
-
20-09-2019 - |
Pregunta
Estoy tratando de integrar junto JOTM e Hibernate EntityManager para poner a prueba mis EJB en un entorno de manera transaccional, pero fuera del contenedor.
Mi prueba tiene el siguiente aspecto:
- Inicio JOTM
- Poner UserTransaction de JOTM en JNDI
- Crear y configurar StandardXADataSource
- Poner la fuente de datos en JNDI
- Configurar hibernación y crear EMF
- Crear una EM
- Comenzar una transacción
- Unir la transacción en EM
- Guarde una entidad
- Compruebe que se almacena
- Rollback la transacción
- Compruebe la base de datos para el recuento de los registros
- Tear todo abajo
Esto es lo que mi código es el siguiente: http://pastebin.com/m22a9f6b
Esta es la salida de registro: http://pastebin.com/m6da9383a
La prueba falla en el paso 12 (línea 121).
Como se puede ver, aunque no tengo rollo con respaldo de la transacción, hay un registro en la base de datos. Parece que las transacciones en las que no se utilizan en absoluto y el registro ya ha recibido a través en el db.
¿Tiene alguna idea de cómo esto podría estar ocurriendo y cómo solucionarlo?
Solución
Me di cuenta de lo que dar mi propia implementación de ConnectionProvider que devolvería XAConnection en lugar de conexiones simples. De esta manera las transacciones parecen funcionar