Utilizzo del supporto della transazione globale nell'applicazione

La piattaforma J2EE consente di utilizzare sia un approccio di demarcazione transazione programmatico che di dichiarazione per gestire le transazioni nell'applicazione.

L'approccio programmatico è la transazione gestita dal componente e quello di demarcazione della transazione di dichiarazione è la transazione gestita dal contenitore.

Transazione gestita dal componente (o gestita dal bean)

L'applicazione J2EE utilizza l'interfaccia JTA javax.transaction.UserTransaction per demarcare un limite della transazione su un insieme di modifiche alla risorsa protetta in modo programmatico. Le transazioni gestite dal componente possono essere utilizzate sia nel servlet che nell'ambiente EJB. Nel caso di un EJB, si imposta l'attributo di transazione nel descrittore di distribuzione come TX_BEAN_MANAGED.

Una transazione, di solito, inizia con una chiamata UserTransaction.begin(). Quando il componente dell'applicazione è pronto per eseguire il commit delle modifiche, richiama UserTransaction.commit() per coordinare ed eseguire il commit delle modifiche. Se il componente dell'applicazione deve eseguire il rollback della transazione, richiama UserTransaction.rollback() e tutte le modifiche vengono salvate. Ad esempio:

    // Richiamare la transazione utente
    javax.transaction.UserTransaction transaction =
    ejbcontext.getUserTransaction();

    // Avviare la transazione
    transaction.begin();

    // Eseguire le modifiche alle risorse protette.
    // Ad esempio, utilizzare l'interfaccia di interazione CCI di J2EE/CA
    // per inoltrare le modifiche ai sistemi EIS
    interaction.execute(interactionSpec, input, output);

    if (/* decide to commit */) {
    // eseguire il commit della transazione
    transaction.commit();

    } else { /* decide to roll back */
    // eseguire il rollback della transazione
    transaction.rollback();
    }

Transazione gestita dal contenitore

Le transazioni gestite dal contenitore possono essere utilizzate solo nell'ambiente EJB. L'EJB specifica una transazione gestita dal contenitore in modo dichiarativo tramite l'attributo della transazione nel descrittore di distribuzione (come ad esempio TX_REQUIRED). Una transazione gestita dal contenitore viene gestita dal contenitore EJB. Il contenitore chiama i metodi appropriati (come ad esempio begin, commit o rollback) per conto del componente EJB. Questo approccio dichiarativo semplifica la programmazione delle chiamate nell'EJB.

Lettura correlata: Per ulteriori informazioni sull'architettura J2EE e le specifiche JTA, vedere http://java.sun.com/j2ee/docs.html.

Concetti correlati
Supporto transazione globale con commit a due fasi
Prerequisiti del commit a due fasi
Riferimenti correlati
Considerazioni sull'ambiente del commit a due fasi

Feedback