Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
11.7.6. Annuler une transaction
Cette procédure montre comment annuler une transaction à l'aide de l'API Java Transaction (JTA)
Conditions préalables
Vous devez démarrer une transaction avant de pouvoir la supprimer. Pour plus d'informations sur le démarrage d'une transaction, veuillez consulter Section 11.7.3, « Démarrer une transaction ».
Appeler la méthode
rollback()
surUserTransaction
.Lorsque vous appelez la méthoderollback()
surUserTransaction
, le gestionnaire de transactions tentera de valider la transaction.@Inject private UserTransaction userTransaction; public void updateTable(String key, String value) EntityManager entityManager = entityManagerFactory.createEntityManager(); try { userTransaction.begin(): <!-- Perform some data manipulation using entityManager --> ... // Commit the transaction userTransaction.commit(); } catch (Exception ex) { <!-- Log message or notify Web page --> ... try { userTransaction.rollback(); } catch (SystemException se) { throw new RuntimeException(se); } throw new RuntimeException(e); } finally { entityManager.close(); } }
Si vous utilisez des CMT (Container Managed Transactions), vous n'avez pas besoin de supprimer la transaction manuellement.
Si vous configurez votre bean pour qu'il puisse utiliser des transactions gérées conteneur, le conteneur devra gérer le cyle de vie des transactions pour vous sur la base d'annotations que vous aurez configurées dans le code.Note
Une annulation CMT se produit en cas d'exception RuntimeException. Vous pouvez également invoquer la méthodesetRollbackOnly
pour l'annulation ou utiliser@ApplicationException(rollback=true
) pour obtenir une exception d'application pour l'annulation.
Résultat
Votre transaction est annulée par le gestionnaire de transactions.
Note
Voici un exemple complet Section 11.9.2, « Exemple de transaction JTA ».