Korzystanie z obsługi transakcji globalnych w aplikacji

Platforma J2EE do zarządzania transakcjami w aplikacji użytkownika umożliwia wykorzystanie programistycznego lub deklaratywnego podejścia do rozgraniczania transakcji.

Podejście programistyczne opiera się na transakcjach zarządzanych przez komponent, a podejście deklaratywne - na transakcjach zarządzanych przez kontener.

Transakcja zarządzana przez komponent (lub zarządzana przez komponent bean)

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();
    }

Transakcja zarządzana przez kontener

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.

Pojęcia pokrewne
Obsługa transakcji globalnych z zatwierdzaniem dwufazowym
Wymagania wstępne dla zatwierdzania dwufazowego
Odsyłacze pokrewne
Zagadnienia dotyczące środowiska zatwierdzania dwufazowego

Opinie