Quand @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) s'engager?
Un EJB méthode nommée Aby
appelle un autre EJB méthode nommée Bob
Bob
est marqué avec @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
Quand bob
transaction est validée?:
a) lorsque bob
invocation se termine
b) lorsque aby
invocation se termine
c) d'autres. quand?
Vous devez vous connecter pour publier un commentaire.
Je pense que l'Un est à droite. Lorsque la méthode Bob est appelé, il crée de nouvelles transactions et méthode Aby est suspendu jusqu'à ce que le Bob transaction est validée.
Notez également qu'il doit être la méthode à partir d'un autre bean pour le rendre transactionnelle, les méthodes appelées par le même bean ne pas agir comme les méthodes d'affaires.
Voir ce grand l'article pour de plus amples explications.
@AroundInvoke
méthodes) qui s'appliquent à Bob. Moins connu est que la classe qui déclare labob
méthode peut aussi déclarer une@AroundInvoke
méthode, puis le haricot deviendra automatiquement un intercepteur pour lui-même. Donc, le début de la transaction avant l'invocation entre l'intercepteur de la chaîne (ce qui inclut le haricot) et est fermé (commit ou rollback) lors de l'invocation des feuilles de l'intercepteur de la chaîne.requires_new
, bob transaction est partie prenante avant de reprendre aby transaction. cela semble cohérent avec Petr Mensik citation "Aby gots suspendu jusqu'à ce que le Bob transaction est obligé." et si la réponse est A, non B.En fait, je pense que la variante a est correcte. Voir:
EJB 3.0 - Transaction Imbriquée != Nécessite De Nouvelles?
J'ai aussi fait un peu de recherche et le regarda dans les db (Hyper Sonic) les journaux pour voir quand il est commis dans le db et il est commise lorsque le REQUIRES_NEW méthode est fini. Mais depuis qu'il est à l'conteneur pour gérer les transactions peut-être que cela pourrait changer en fonction de conteneur. J'ai utilisé JBoss pendant le débogage de cette. Et mise en veille prolongée (d'une valeur de mentionner depuis que j'ai testé cela en vérifiant db journaux).
Je suppose que d'une base de données d'écriture est impliqué depuis que vous vous posez sur les transactions.
Mes pensées diffère de la réponse précédente, de sorte qu'il serait amusant de le persuader.