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:

  1. Inicio JOTM
  2. Poner UserTransaction de JOTM en JNDI
  3. Crear y configurar StandardXADataSource
  4. Poner la fuente de datos en JNDI
  5. Configurar hibernación y crear EMF
  6. Crear una EM
  7. Comenzar una transacción
  8. Unir la transacción en EM
  9. Guarde una entidad
  10. Compruebe que se almacena
  11. Rollback la transacción
  12. Compruebe la base de datos para el recuento de los registros
  13. 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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top