2009-10-16 4 views
1

J'ai une situation où j'ai un arbre de Entities, et un Session Bean. Le Session Bean persiste simplement ou fusionne les entités, et la méthode en question est marquée comme @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW). Maintenant, dans le cas où une entité enfant ne peut pas être persistée/fusionnée en raison (par exemple) d'une violation de clé étrangère ou d'un champ non nullable manquant, la transaction est marquée dans les journaux à annuler, et un EJBException levé. Je m'attendais à ce que toute la transaction soit annulée, mais à la place, je vois l'entité parente apparaitre dans la base de données après le retour de l'appel de bean de session EJB, malgré l'échec de l'entité enfant.EJB3/DB2 Transactions ne recule pas

Est-ce que quelqu'un d'autre a vu un comportement comme celui-ci? Informations complémentaires:

Server: Glassfish 
Persistence manager: Toplink 
Connection Pool: DB2 Universal Driver XA compliant driver. 

Merci.

+0

Pouvez-vous montrer le code qui lève l'exception? –

Répondre

2

On dirait que le pool de connexions dans Glassfish a été défini avec l'indicateur "Non Transactional Connections" activé. Cela causait l'échec de revenir en arrière.

Questions connexes