Transazioni con commit a due fasi

Le transazioni di commit a due fasi (XA) sono disabilitate nei buildpack Liberty per gli ambienti Cloud Foundry. 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.

Le transazioni di commit a due fasi possono essere utilizzate tramite i bean EJB o l'utilizzo dell'applicazione della classe javax.transaction.UserTransaction. Per l'esecuzione corretta in un ambiente Cloud Foundry, verificare se l'applicazione richiede transazioni XA.

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 comprendono più risorse richiedono un commit a due fasi che non è supportato in ambienti Cloud Foundry.

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 bean gestiti o gestiti da contenitore con gli attributi della transazione impostati su "Never" o "NotSupported", l'applicazione non utilizza transazioni XA e l'indicazione di questa regola può essere ignorata.

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