Transakce s dvoufázovým potvrzováním

Transakce s dvoufázovým potvrzováním (XA) nejsou v produktu Liberty v cloudových platformách povoleny. Standardně správce transakcí Liberty zapíše soubor protokolu transakcí do lokálního systému souborů. Vzhledem k tomu, že lokální systém souborů je přechodný na cloudových platformách, soubor transakčního protokolu není k dispozici po zhroucení aplikace nebo prostředí JVM (Java Virtual Machine). Přestože správce transakcí může být konfigurován tak, aby používal službu databáze k ukládání transakčních protokolů, vytvoří cloudové platformy automaticky po zhroucení zcela novou instanci aplikace. Výsledkem je, že správce transakcí nemůže identifikovat, který konkrétní protokol má být použit k obnovení transakcí nezdařené instance.

Standardně jsou objekty typu Enterprise JavaBeans (EJB) spravovány kontejnerem a mají atribut transakce Required, což znamená, že používají transakce JTA. Transakce JTA, které zahrnují jeden prostředek, jsou plně podporovány. Transakce JTA, které zahrnují více prostředků, vyžadují dvoufázové potvrzení, které není podporováno. Toto pravidlo značí soubory ejb-jar.xml a kód Java, který odkazuje na balík javax.ejb. Toto pravidlo také označí kód Java, který má odkazy na třídu javax.transaction.UserTransaction. Ověřte, zda vaše aplikace používá transakce XA, a odeberte transakce XA, pokud jsou k dispozici.

V kódu Java označují následující explicitní anotace použití transakcí JTA:

V souboru ejb-jar.xml označují následující explicitní prvky použití transakcí JTA:

Poznámka: Pokud vaše aplikace nepoužívá třídu javax.transaction.UserTransaction a všechny vaše objekty EJB bean jsou spravované objektem typu bean nebo spravované kontejnerem s atributy transakce "Never" nebo "NotSupported", pak vaše aplikace nepoužívá transakce XA a označení tohoto pravidla lze ignorovat.

Následující explicitní anotace nebo prvky označují, že objekt typu EJB bean nepoužívá transakce XA: