11.5.2. Cycle de vie d'une transaction JTA
Votre application démarre une nouvelle transaction
Pour démarrer une transaction, votre application doit obtenir une instance de la classeUserTransactiondu JNDI ou bien, s'il s'agit d'un EJB, en provenance d'une annotation. L'interfaceUserTransactioncomprend des méthodes pour commencer, valider, ou annuler des transactions au plus haut niveau. Les transactions nouvellement créées sont associées automatiquement à leur thread invoquant. Les transactions imbriquées ne sont pas supportées dans JTA, donc toutes les transactions sont des transactions au plus haut niveau.En appelantUserTransaction.begin()avec des annotations démarre une transaction quand une méthode EJB est appelée (bassée sur des règles d'attributs de transaction). Toute ressource qui est utilisée après cela sera associée à la transaction. S'il y a plus plus d'une seule ressource listée, votre transaction devient une transaction XA, et participera au protocole de validation en deux temps.Note
L'objetUserTransactionest utilisé uniquement pour les transactions BMT. Dans CMT, l'objet UserTransaction n'est pas autorisé.Votre application modifie son état.
Dans l'étape suivante, votre application effectue son travail et précède aux changements d'état.Votre application décide de valider ou de s'annuler
Quand votre application a fini de changer d'état, elle décide si elle doit valider ou s'annuler. Elle appelle la méthode qui convient. Elle appelleUserTransaction.commit()ouUserTransaction.rollback().Le gestionnaire de transactions supprime la transaction des archives.
Après la validation ou l'annulation, le gestionnaire de transactions nettoie ses archives et supprime les informations du journal de transaction sur votre transaction.
Le recouvrement d'échec a lieu automatiquement. Si une ressource, un participant à une transaction, ou un serveur d'applications est disponible, le gestionnaire de transactions s'occupe du recouvrement quand l'échec sous-jacent est résolu.