A két fázisú véglegesítési (XA) tranzakciók felhőkörnyezetekben futó Liberty kiszolgálón nem engedélyezettek. A Liberty tranzakciókezelő alapértelmezésben a helyi fájlrendszerre írja ki a tranzakciós naplófájlt. Mivel a helyi fájlrendszer felhőkörnyezetekben átmeneti, a tranzakciós naplófájl az alkalmazás vagy a Java látszólagos gép összeomlás azután nem érhető el. ár a tranzakciókezelőt be lehet úgy állítani, hogy adatbázis szolgáltatást használjon a tranzakciós naplók tárolásához, a felhőkörnyezetek automatikusan az alkalmazás teljesen új példányát hozzák létre összeomlás után. Ennek eredményeként a tranzakciókezelő nem tudja beazonosítani, hogy melyik naplót kell a meghibásodott példány tranzakcióinak helyreállításához használni.
Az Enterprise JavaBeans (EJB) komponensek alapértelmezésben tároló által
felügyeltek és rendelkeznek Required tranzakciós attribútummal,
ami azt jelenti, hogy JTA tranzakciókat használnak. Az egyetlen erőforrásra
kiterjedő JTA tranzakciók teljes mértékben támogatottak. A több erőforrásra
kiterjedő tranzakciók két fázisú véglegesítést igényelnek, ami nem
támogatott. Ez a szabály a ejb-jar.xml fájlokat és az olyan Java
kódot jelzi, amely a javax.ejb csomagra hivatkozik.
Ez a szabály a Java kódot is megjelöli, amely hivatkozik a Javax.tranzakció.UserTransaction osztály.
Ellenőrizze, hogy alkalmazása
használ-e XA tranzakciókat, és távolítsa el az XA tranzakciókat, ha jelen
vannak.
A Java kódban a következő kifejezett annotációk JTA tranzakciók használatát jelzik:
javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.MANDATORY)javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.REQUIRED)javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.REQUIRES_NEW)javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.SUPPORTS)javax.ejb.TransactionManagement(javax.ejb.TransactionManagementType.CONTAINER)Az ejb-jar.xml fájlban a következő explicit elemek jelzik a JTA
tranzakciók használatát:
<trans-attribute>Mandatory|Required|RequiresNew|Supports</trans-attribute><transaction-type>Container</transaction-type>Megjegyzés: Ha az alkalmazás nem használja a Javax.tranzakció.UserTransaction osztály, és az összes alkalmazás EJB komponens a (z) "Soha" vagy "NotSupported" tranzakciós attribútumokkal kezelt komponens vagy tároló, akkor az alkalmazás nem XA tranzakciókat használ, és a szabály lefutása figyelmen kívül hagyható.
A következő explicit annotációk és elemek jelzik, hogy az EJB komponens nem használ XA tranzakciókat:
javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.NEVER)javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.NOT_SUPPORTED)javax.ejb.TransactionManagement(javax.ejb.TransactionManagementType.BEAN)<trans-attribute>Never|NotSupported</trans-attribute><transaction-type>Bean</transaction-type>