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 ».

  1. Appeler la méthode rollback() sur UserTransaction.

    Lorsque vous appelez la méthode rollback() sur UserTransaction, 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();
        }
    }
    
  2. 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éthode setRollbackOnly 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.