Transaktionen mit zweiphasiger Festschreibung

Zweiphasige Commit-Transaktionen (XA-Transaktionen) sind in Liberty-Buildpacks für Cloud Foundry-Umgebungen inaktiviert. Standardmäßig schreibt der Transaktionsmanager von Liberty die Transaktionsprotokolldatei in das lokale Dateisystem. Da das lokale Dateisystem auf Cloudplattformen ephemer ist, ist die Transaktionsprotokolldatei nach dem Absturz einer Anwendung oder der Java Virtual Machine nicht verfügbar. Obwohl der Transaktionsmanager so konfiguriert werden kann, dass er für die Speicherung der Transaktionsprotokolle Datenbankservices verwendet, erstellen Cloudplattformen nach dem Absturz automatisch eine vollständig neue Instanz der Anwendung. Deshalb kann der Transaktionsmanager nicht erkennen, welches Protokoll er zum Wiederherstellen der Transaktionen der ausgefallenen Instanz verwenden muss.

Zweiphasige Commit-Transaktionen können über EJB-Beans oder die Verwendung der Klasse javax.transaction.UserTransaction durch die Anwendung genutzt werden. Für die erfolgreiche Ausführung in einer Cloud Foundry-Umgebung müssen Sie überprüfen, ob Ihre Anwendung XA-Transaktionen erfordert.

Standardmäßig sind Enterprise JavaBeans (EJB) containergesteuert und haben ein Transaktionsattribut Required, d. h., sie verwenden JTA-Transaktionen. JTA-Transaktionen, die sich nur über eine einzige Ressource erstrecken, werden vollständig unterstützt. JTA-Transaktionen, die mehrere Ressourcen umfassen, erfordern ein zweiphasiges Commit, das in Cloud Foundry-Umgebungen nicht unterstützt wird.

Die folgenden expliziten Annotationen weisen in Java-Code auf die Verwendung von JTA-Transaktionen hin.

Die folgenden expliziten Elemente weisen in der Datei ejb-jar.xml auf die Verwendung von JTA-Transaktionen hin:

Anmerkung: Wenn Ihre Anwendung die Klasse javax.transaction.UserTransaction nicht verwendet und alle Ihrer Anwendungs-EJB-Beans beangesteuert oder mit den Transaktionsattributen "Never" oder "NotSupported" containergesteuert sind, dann verwendet Ihre Anwendung keine XA-Transaktionen und die Markierungen dieser Regel können ignoriert werden.

Die folgenden expliziten Annotationen weisen darauf hin, dass eine EJB-Bean keine XA-Transaktionen verwendet: