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 ?