2009-03-22 2 views
1

J'ai un bean apatride resposible pour les entités persistantes à une base de données. Ce bean sans état est appelé par la méthode onMessage d'un bean de message. La chose câblée 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.La méthode annotée REQUIRES_NEW est exécutée sans transaction?

@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; 
} 

rafraîchissement appel déclenche l'exception suivante:

Causée par: javax.persistence.TransactionRequiredException: aucune transaction est en cours

Toutes les idées? Je suis assez nouveau à JTA donc j'ai peut-être manqué quelque chose d'important?

Répondre

0

J'ai essayé beaucoup pour le résoudre et après environ 16 heures, il semble fonctionner. Je ne sais pas exactement ce qui a fait l'affaire, mais ce pourrait être la mise à jour de Glassfish 2.1.

Enfin capable de dormir la nuit encore!

Questions connexes