Mise en veille prolongée EntityManager + JOTM: les transactions ne sont pas utilisés
-
20-09-2019 - |
Question
Je suis en train d'intégrer ensemble JOTM et Hibernate EntityManager pour tester mes EJBs dans un environnement de manière transactionnelle mais hors conteneur.
Mon test se présente comme suit:
- Démarrer JOTM
- Mettre l'UserTransaction de JOTM dans JNDI
- Créer et configurer StandardXADataSource
- Mettez le DataSource dans JNDI
- Configurer mise en veille prolongée et créer EMF
- Créer un EM
- Prépare une transaction
- Joignez-vous à la transaction EM
- Entreposez une entité
- garantissez il est stocké
- annuler la transaction
- Vérifiez la base de données pour le nombre d'enregistrements
- tout Abattez
Voici ce que mon code ressemble à: http://pastebin.com/m22a9f6b
Voici la sortie de l'enregistrement: http://pastebin.com/m6da9383a
Le test échoue à l'étape 12 (ligne 121).
Comme vous pouvez le voir, même si j'ai rouleau soutenu par la transaction, il y a un enregistrement dans la base de données. On dirait que les transactions où pas tout utilisé et que le record obtenu grâce dans le db.
Avez-vous des idées comment cela pourrait se produire et comment le résoudre?
La solution
J'ai compris que je dois fournir ma propre mise en œuvre de ConnectionProvider qui reviendrait XAConnection au lieu de connexions simples. Cette transaction façon semblent fonctionner