Transakcje z zatwierdzaniem dwufazowym

Transakcje z zatwierdzaniem dwufazowym (XA) są wyłączone w pakietach budowania Liberty dla środowisk Cloud Foundry. Domyślnie menedżer transakcji Liberty zapisuje plik dziennika transakcji w lokalnym systemie plików. Ponieważ lokalny system plików jest efemeryczny na platformach w chmurze, plik dziennika transakcji nie jest dostępny po awarii aplikacji lub wirtualnej maszyny języka Java. Mimo że menedżer transakcji może być skonfigurowany do używania usługi bazy danych w celu przechowywania dzienników transakcji, platformy w chmurze automatycznie tworzą całkowicie nową instancję aplikacji po awarii. W wyniku tego menedżer transakcji nie może zidentyfikować, który konkretny dziennik ma być używany do odtwarzania transakcji instancji zakończonej niepowodzeniem.

Transakcje z zatwierdzaniem dwufazowym mogą być używane przez komponenty bean EJB lub przez klasę javax.transaction.UserTransaction, która jest używana przez aplikację. Aby pomyślnie uruchomić w środowisku Cloud Foundry, należy sprawdzić, czy aplikacja wymaga transakcji XA.

Domyślnie komponenty EJB (Enterprise JavaBeans) są zarządzane przez kontener i mają atrybut transakcji Required, co oznacza, że używają transakcji JTA. Transakcje JTA obejmujące pojedynczy zasób są w pełni obsługiwane. Transakcje JTA obejmujące wiele zasobów wymagają zatwierdzania dwufazowego, które nie jest obsługiwane w środowiskach Cloud Foundry.

W kodzie Java następujące jawne adnotacje wskazują na użycie transakcji JTA:

W pliku ejb-jar.xml następujące jawne elementy wskazują na użycie transakcji JTA:

Uwaga: jeśli aplikacja nie używa klasy javax.transaction.UserTransaction i wszystkie komponenty EJB aplikacji są zarządzane przez komponent bean lub zarządzane przez kontener z atrybutem kontenera o wartości „Never” albo „NotSupported”, wówczas aplikacja nie używa transakcji XA i oznaczenie flagą tej reguły może zostać zignorowane.

Następujące jawne adnotacje lub elementy wskazują, że komponent bean EJB nie używa transakcji XA: