Transazioni con commit a due fasi

Le transazioni XA del commit a due fasi non sono abilitate in Liberty sulle piattaforme cloud. Per impostazione predefinita, il programma di gestione delle transazioni Liberty scrive il file di log delle transazioni nel file system locale. Poiché il file system locale è effimero nelle piattaforme cloud, il file di log delle transazioni non è disponibile dopo che un'applicazione o la macchina virtuale Java si interrompono. Sebbene il programma di gestione delle transazioni possa essere configurato per utilizzare un servizio di database per memorizzare i log delle transazioni, le piattaforme cloud creano automaticamente una istanza completamente nuova dell'applicazione dopo l'interruzione Di conseguenza, il programma di gestione delle transazioni, non è in grado di identificare quale particolare log utilizzare per ripristinare le transazioni dell'istanza non riuscita.

Per impostazione predefinita i bean EJB ( Enterprise JavaBeans) sono gestiti da contenitore e dispongono dell'attributo di transazione Required, che indica che utilizzano transazioni JTA. Le transazioni JTA che suddividono una singola risorsa sono completamente supportate. Le transazioni JTA che suddividono più risorse richiedono un commit a due fasi che non è supportato. Questa regola contrassegna i file ejb-jar.xml e il codice Java che ha riferimenti al package javax.ejb. Questa regola contrassegna anche il codice Java che ha riferimenti alla classe javax.transaction.UserTransaction. Verificare se l'applicazione utilizza transazioni XA e rimuovere le transazioni XA se sono presenti.

Nel codice Java, le seguenti annotazioni esplicite indicano l'utilizzo di transazioni JTA:

Nel file ejb-jar.xml i seguenti elementi espliciti indicano l'utilizzo di transazioni JTA:

Nota: Se l'applicazione non utilizza la classe javax.transaction.UserTransaction, e tutti i bean EJB dell'applicazione sono gestiti da bean, oppure gestiti da contenitore con attributi di transazione "Never" o "NotSupported", allora l'applicazione non sta utilizzando transazioni XA e il contrassegno di questa regola può essere ignorato.

Le seguenti annotazioni o elementi espliciti indicano che un bean EJB non utilizza le transazioni XA.