Podejście programistyczne opiera się na transakcjach zarządzanych przez komponent, a podejście deklaratywne - na transakcjach zarządzanych przez kontener.
Do rozgraniczania transakcji w celu programistycznego ustawienia zmian w zasobach chronionych aplikacja J2EE korzysta z interfejsu JTA javax.transaction.UserTransaction. Transakcje zarządzane przez komponent mogą być używane zarówno w środowisku serwletów jak i w środowisku EJB. W środowisku EJB dla deskryptora wdrażania TX_BEAN_MANAGED należy ustawić atrybut transakcji (transaction).
Transakcja zazwyczaj rozpoczyna się od wywołania metody UserTransaction.begin(). Gdy komponent aplikacji jest gotowy do zatwierdzenia zmian, w celu skoordynowania i zatwierdzenia tych zmian jest wywoływana metoda UserTransaction.commit(). Jeśli w komponencie aplikacji transakcja musi zostać wycofana, wywoływana jest metoda UserTransaction.rollback(). Na przykład:
// Pobranie transakcji użytkownika javax.transaction.UserTransaction transaction = ejbcontext.getUserTransaction(); // Uruchomienie transakcji transaction.begin(); // Wprowadzenie zmian w zasobach chronionych. // Na przykład użycie interfejsu interakcji CCI środowiska J2EE/CA // w celu wprowadzenia zmian w systemie EIS interaction.execute(interactionSpec, input, output); if (/* decyzja, czy zatwierdzić */) { // Zatwierdź transakcję transaction.commit(); } else { /* decyzja, czy wycofać */ // Wycofaj transakcję transaction.rollback(); }
Transakcje zarządzane przez kontener mogą być wykorzystywane tylko w środowisku EJB. W środowisku EJB transakcja zarządzana przez kontener jest określana deklaratywnie za pomocą atrybutu transakcji (transaction) w deskryptorze wdrażania (takim jak TX_REQUIRED). Transakcją zarządzaną przez kontener zarządza kontener EJB. Kontener wywołuje odpowiednie metody (rozpoczęcia, zatwierdzenia lub wycofania) w imieniu komponentu EJB. Podejście deklaratywne upraszcza wywołania programistyczne w środowisku EJB.
Informacje pokrewne: Więcej informacji na temat architektury J2EE oraz specyfikacji JTA zawiera serwis WWW http://java.sun.com/j2ee/docs.html.