Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

11.7.3. Démarrer une transaction

Cette procédure montre comment démarrer une nouvelle transaction. L'APi est le mème que vous exécutiez un gestionnaire de transactions configuré avec JTA ou JTS.
  1. Obtenez une instance de UserTransaction.

    Vous pouvez obtenir une instance par JNDI, injection, ou un contexte d'EJB, si l'EJB utilise des transactions gérées-bean, par le biais de l'annotation @TransactionManagement(TransactionManagementType.BEAN).
    • JNDI

      new InitialContext().lookup("java:comp/UserTransaction")
    • Injection

      @Resource UserTransaction userTransaction;
    • Contexte

      • Pour un bean stateless/stateful :
        @Resource SessionContext ctx;
        ctx.getUserTransaction();
      • Pour un bean message-driven :
        @Resource MessageDrivenContext ctx;
        ctx.getUserTransaction()
  2. Appeler UserTransaction.begin() une fois connecté à votre source de données.

    ...
    try {
        System.out.println("\nCreating connection to database: "+url);
        stmt = conn.createStatement();  // non-tx statement
        try {
            System.out.println("Starting top-level transaction.");
            userTransaction.begin();
            stmtx = conn.createStatement(); // will be a tx-statement
            ...
        }
    }
    
Participer à une transaction en utilisant l'API JTS.

L'un des avantages des EJB (qu'ils soient utilisés avec CMT ou BMT) est que le conteneur gère tous les aspects internes de traitement des transactions, c'est à dire que vous êtes libre de vous occuper de transactions faisant partie de transactions XA ou de distribution de transactions dans les conteneurs EAP.

Résultat :

La transaction est lancée. Toute utilisation de votre source de données sera transactionnelle jusqu'à ce que vous validiez ou annuliez la transaction.