Utilisation de la prise en charge d'une transaction globale dans votre application

La plateforme J2EE vous permet d'utiliser une approche par programmation ou une approche déclarative de délimitation des transactions pour gérer les transactions de votre application.

L'approche par programmation représente la transaction gérée par composant et l'approche déclarative représente la transaction gérée par conteneur.

Transaction gérée par composant (ou géré par le bean)

L'application J2EE utilise l'interface JTA javax.transaction.UserTransaction pour délimiter par programmation une frontière de transaction pour un ensemble de changements apportés à la ressource protégée. Vous pouvez utiliser les transactions gérées par composant dans l'environnement du servlet et l'environnement EJB. Pour ce dernier, vous devez définir l'attribut de la transaction dans son descripteur de déploiement en tant que TX_BEAN_MANAGED.

Une transaction commence généralement par un appel de la méthode UserTransaction.begin(). Lorsque le composant de l'application est prêt pour la validation des changements, il appelle la méthode UserTransaction.commit() pour coordonner et valider ces changements. S'il doit annuler la transaction, il appelle la méthode UserTransaction.rollback() et tous les changements sont annulés. Par exemple :

    // Obtenir la transaction utilisateur
    javax.transaction.UserTransaction transaction =
    ejbcontext.getUserTransaction();

    // Démarrer la transaction
    transaction.begin();

    // Apporter des changements aux ressources.protégées
    // Par exemple, utiliser l'interface de l'interaction CCI de J2EE/CA
    // pour soumettre des changements à un système EIS
    interaction.execute(interactionSpec, input, output);

    if (/* decide to commit */) {
    // valider la transaction
    transaction.commit();

    } else { /* decide to roll back */
    // annuler la transaction
    transaction.rollback();
    }

Transaction gérée par conteneur

Les transactions gérées par conteneur s'utilisent uniquement dans l'environnement EJB. Le composant EJB définit une transaction gérée par conteneur de manière déclarative via l'attribut de transaction dans le descripteur de déploiement (tel que TX_REQUIRED). Une transaction gérée par conteneur est géré par le conteneur d'EJB. Le conteneur appelle les méthodes appropriées (démarrer, valider ou annuler) pour le composant EJB. Cette approche déclarative simplifie les appels par programmation dans l'EJB.

Informations connexes : pour plus d'informations sur l'architecture J2EE et les définitions JTA, voir http://java.sun.com/j2ee/docs.html.

Concepts associés
Prise en charge d'une transaction globale avec validation en deux phases
Prérequis pour la validation en deux phases
Référence associée
Environnement de validation en deux phases : le point sur la question

Vos commentaires