Lokale und globale Transaktionen
Anwendungen verwenden Ressourcen wie JDBC-Datenquellen (Java™ Database Connectivity) und Verbindungsfactorys, die über die Ansicht "Ressourcen" der Administrationskonsole konfiguriert werden. Es hängt von der zugrunde liegenden Transaktionsunterstützung des Ressourcenproviders ab, wie diese Ressourcen an globalen Transaktionen teilnehmen.
Beispielsweise können die meisten JDBC-Provider XA- oder Nicht-XA-Versionen einer Datenquelle bereitstellen. Eine Nicht-XA-Datenquelle kann nur lokale Transaktionen des Ressourcenmanagers (RMLT, Resource Manager Local Transactions) unterstützen, aber eine XA-Datenquelle kann zweiphasige Commit-Koordination und lokale Transaktionen unterstützen.
![[z/OS]](../images/ngzos.gif)
Wenn eine Anwendung
zwei oder mehr Ressourcenprovider verwendet, die nur RMLTs unterstützen,
kann die Atomizität aufgrund der einphasigen Spezifik dieser Ressourcen nicht zugesichert werden.
Zur Gewährleistung der Atomizität muss die Anwendung Ressourcen verwenden, die
XA- oder RSS-Koordination unterstützen, und in einer globalen Transaktion auf diese Ressourcen zugreifen.
Wenn eine Anwendung
zwei oder mehr Ressourcenprovider verwendet, die nur RMLTs unterstützen,
kann die Atomizität aufgrund der einphasigen Spezifik dieser Ressourcen nicht zugesichert werden.
Zur Gewährleistung der Atomizität muss die Anwendung Ressourcen verwenden, die
die XA-Koordination unterstützen, und muss in einer globalen Transaktion auf diese Ressourcen zugreifen.
Wenn eine Anwendung nur eine RMLT verwendet, kann das atomare Verhalten vom Ressourcenmanager garantiert werden, der in einem LTC-Kontext (Local Transaction Containment, lokaler Transaktionseinschluss) aufgerufen werden kann.
Eine Anwendung kann auch auf einen einzelnen Ressourcenmanager in einem globalen Transaktionskontext zugreifen, selbst wenn dieser Ressourcenmanager die XA-Koordination nicht unterstützt. Eine Anwendung kann dies tun, weil der Anwendungsserver eine "reine Ressourcenoptimierung" durchführt und unter einer RMLT mit dem Ressourcenmanager interagiert. In einem globalen Transaktionskontext führt jeder Versuch, mehrere Ressourcenprovider zu verwenden, die nur RMLTs unterstützen, zu einem Rollback der Transaktion.
Eine Instanz einer Enterprise-Bean kann jederzeit ausstehende Arbeit in einem globalen Transaktionskontext oder in einem LTC-Kontext (LTC = Local Transaction Containment, lokaler Transaktionseinschluss) haben, aber nicht in beiden. Eine Instanz einer Enterprise-Bean kann von einem Kontexttyp zu einem anderen wechseln (in beide Richtungen), wenn alle anstehenden Arbeiten im ursprünglichen Kontext abgeschlossen sind. Jede Verletzung dieses Prinzips führt zur Auslösung einer Ausnahme, wenn die Enterprise-Bean den neuen Kontext zu starten versucht.