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:

  1. Démarrer JOTM
  2. Mettre l'UserTransaction de JOTM dans JNDI
  3. Créer et configurer StandardXADataSource
  4. Mettez le DataSource dans JNDI
  5. Configurer mise en veille prolongée et créer EMF
  6. Créer un EM
  7. Prépare une transaction
  8. Joignez-vous à la transaction EM
  9. Entreposez une entité
  10. garantissez il est stocké
  11. annuler la transaction
  12. Vérifiez la base de données pour le nombre d'enregistrements
  13. 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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top