1 votes

La méthode annotée REQUIRES_NEW est exécutée sans transaction ?

J'ai un bean sans état responsable de la persistance des entités dans une base de données. Ce bean sans état est appelé par la méthode onMessage d'un bean de messages. Le problème est que sur le premier message tout fonctionne bien, mais sur le message suivant la méthode responsable de la persistance est invoquée en dehors d'une transaction, même si la méthode est annotée avec REQUIRES_NEW.

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public StateChange persistChange(long deviceId, ...) {

    ...

    StateChange change = new StateChange(...);
    em.persist(change);
    em.refresh(change); // To provoke the error

    return change;
}

L'appel à l'actualisation déclenche l'exception suivante :

Caused by : javax.persistence.TransactionRequiredException : aucune transaction n'est en cours.

Des idées ? Je suis assez novice en matière de JTA, il se peut donc que j'aie oublié quelque chose d'important ?

0voto

Kimble Points 2114

J'ai beaucoup essayé de résoudre le problème et, après environ 16 heures, il semble que cela fonctionne. Je ne sais pas exactement ce qui a fait l'affaire, mais il se peut que ce soit la mise à jour vers Glassfish 2.1.

Je peux enfin dormir à nouveau la nuit !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X