Transaktionsunterstützung in WebSphere Application Server
Die Unterstützung für Transaktionen wird vom Transaktionsservice in WebSphere Application Server bereitgestellt. Wie Anwendungen Transaktionen verwenden, hängt vom Typ der Anwendungskomponente ab.
Eine Transaktion ist eine Aktivitätseinheit, in der viele Aktualisierungen an Ressourcen autark (als unteilbare Arbeitseinheit) ausgeführt werden können, sodass entweder alle Aktualisierungen oder keine Aktualisierung permanent festgeschrieben werden. Während der Verarbeitung einer SQL-COMMIT-Anweisung schreibt der Datenbankmanager beispielsweise mehrere SQL-Anweisungen atomar in einer relationalen Datenbank fest. In diesem Fall ist die Transaktion vollständig im Datenbankmanager enthalten und kann als Resource Manager Local Transaction (RMLT) betrachtet werden. In einigen Kontexten wird eine Transaktion als logische Arbeitseinheit (LUW, Logical Unit of Work) bezeichnet. Wenn mehrere Ressourcenmanager an einer Transaktion beteiligt sind, beispielsweise mehrere Datenbankmanager, ist ein externer Transaktionsmanager erforderlich, der die einzelnen Ressourcenmanager koordiniert. Eine Transaktion, die sich auf mehrere Ressourcenmanager erstreckt, wird als globale Transaktion bezeichnet. WebSphere Application Server ist ein Transaktionsmanager, der globale Transaktionen koordinieren, an empfangenen globalen Transaktionen teilnehmen und eine Umgebung sein kann, in der lokale Transaktionen eines Ressourcenmanagers ausgeführt werden können.
- Eine Session-Bean kann containergesteuerte Transaktionen verwenden (wobei die Bean die Verwaltung von Transaktionen an den Container delegiert) oder Bean-gesteuerte Transaktionen (komponentengesteuerte Transaktionen, in denen die Bean die Transaktionen selbst verwaltet).
- Entity-Beans verwenden containergesteuerte Transaktionen.
- Webkomponenten (Servlets) und Application-Client-Komponenten verwenden komponentengesteuerte Transaktionen.
WebSphere Application Server ist ein Transaktionsmanager, der die Koordination von Ressourcenmanagern über ihre XAResource-Schnittstelle unterstützt und an verteilten globalen Transaktionen mit Transaktionsmanagern teilnimmt, die das Protokoll CORBA Object Transaction Service (OTS) oder das Protokoll Web Service Atomic Transaction (WS-AtomicTransaction) unterstützen. WebSphere Application Server nimmt auch an Transaktionen teil, die über Ressourcenadapter mit Java™ EE Connector 1.5 importiert werden. Wenn keine Unterstützung für verteilte Transaktionen erforderlich ist, können WebSphere-Anwendungen für die Interaktion mit Datenbanken, JMS-Warteschlangen und JCA-Connector über deren lokale Transaktionsunterstützung konfiguriert werden.
Außer der Koordination XAResource-basierter Ressourcenmanager unterstützt
WebSphere Application Server for z/OS
die Koordination von Ressourcenmanagern über RRS
(z/OS Resource Recovery Services). RRS-kompatible Ressourcenmanager sind
DB2, WebSphere MQ, IMS und
CICS. IBM® WebSphere Application Server for z/OS
kann in einer einzigen globalen Transaktion eine Kombination aus
RRSTransactional-Ressourcenmanagern und XA-fähigen Ressourcenmanagern koordinieren.
Ressourcenmanager, die Transaktionsunterstützung bieten, können in folgende Kategorien
eingeteilt: Ressourcenmanager, die eine zweiphasige Koordination unterstützen (durch Bereitstellung
einer XAResource-Schnittstelle oder Unterstützung von RRS), und Ressourcenmanager, die nur eine einphasige Koordination unterstützen
(z. B. über eine LocalTransaction-Schnittstelle).
Mit der Transaktionsunterstützung von WebSphere Application Server
kann innerhalb einer Transaktion eine beliebige Anzahl von zweiphasigen Ressourcenmanagern koordiniert werden.
Sollten keine anderen Ressourcenmanager vorhanden sein, kann in einer Transaktion auch
ein einphasiger Ressourcenmanager verwendet werden, auch wenn in solch einem Fall keine
WebSphere-Transaktion erforderlich ist.
Ressourcenmanager, die Transaktionsunterstützung bieten, können in folgende Kategorien
eingeteilt: Ressourcenmanager, die eine zweiphasige Koordination unterstützen (durch Bereitstellung
einer XAResource-Schnittstelle), und Ressourcenmanager, die nur eine einphasige Koordination unterstützen
(z. B. über eine LocalTransaction-Schnittstelle). Mit der Transaktionsunterstützung von WebSphere Application Server
kann innerhalb einer Transaktion eine beliebige Anzahl von zweiphasigen Ressourcenmanagern koordiniert werden.
Sollten keine anderen Ressourcenmanager vorhanden sein, kann in einer Transaktion auch
ein einphasiger Ressourcenmanager verwendet werden, auch wenn in solch einem Fall keine
WebSphere-Transaktion erforderlich ist.
- In Szenarien, in denen ein einziger 1-PC-Ressourcenprovider an der Transaktion beteiligt ist und alle 2-PC-Ressourcenprovider für die Transaktion im Lesezugriff verwendet werden. In diesem Fall geben alle 2-PC-Ressourcen in der Vorbereitungsphase an, dass sie schreibgeschützt sind. Da der 1-PC-Ressourcenprovider in diesem Fall der einzige Provider ist, der Aktualisierungen durchführen kann, muss die 1-PC-Ressource nicht vorbereitet werden.
- In Szenarien, in denen nur ein 1-PC-Ressourcenprovider zusammen mit einem oder mehreren 2-PC-Ressourcenprovidern an einer Transaktion beteiligt und Unterstützung für den letzten Teilnehmer (Last Participant Support) verfügbar ist. "Last Participant Support" (Unterstützung für den letzten Teilnehmer) ermöglicht den Einsatz einer 1-PC-Ressource zusammen mit einer beliebigen Zahl von 2-PC-Ressourcen in derselben globalen Transaktion. Nähere Informationen zum Last Participant Support finden Sie im Artikel 1-PC- und 2-PC-Ressourcen in einer Transaktion verwenden.
Der ActivitySession-Service bietet im Vergleich zu dem von Kontexten globaler Transaktionen bereitgestellten Geltungsbereich einen alternativen Geltungsbereich für Arbeitseinheiten. Es ist ein verteilter Kontext, der für die Koordination mehrerer 1-PC-Ressourcenmanager verwendet werden kann. Der WebSphere-EJB-Container und die Implementierungstools unterstützen ActivitySessions als Erweiterung des Java EE-Programmiermodells. Enterprise-Beans können mit Lebenszyklen implementiert werden, die als Alternative zum Transaktionskontext vom ActivitySession-Kontext beeinflusst sind. Eine Anwendung kann damit für die Dauer einer Client-ActivitySession und nicht nur für die Dauer einer EJB-Methode mit einem Ressourcenmanager interagieren und das Ergebnis lokaler Transaktionen des Ressourcenmanagers von der ActivitySession weiterleiten lassen. Nähere Informationen zu ActivitySessions finden Sie im Artikel ActivitySession-Service verwenden.
Für die Klassifizierung von Client-Workloads für WLM können Transaktionsklassen verwendet werden. Die
Workload setzt sich aus verschiedenen WebSphere-Transaktionen zusammen, die für unterschiedliche
Servantregionen bestimmt sind und für die in den entsprechenden Serviceklassen eigene Ziele definiert sind. Jede Transaktion wird an eine eigene WLM-Enklave in einem Servantregionprozess weitergeleitet und gemäß den in der
Serviceklasse definierten Zielen verwaltet. Der Servercontroller, den WLM als Warteschlangenmanager betrachtet,
verwendet die einer Clientanforderung zugeordnete Enklave, um die Prioritäten der Workloads zu verwalten. Wenn die Arbeit eine hohe Priorität besitzt, kann WLM die Arbeit an einen Servant für hohe Priorität
übertragen. Hat die Arbeit eine niedrige Priorität, überträgt WLM die Arbeit an einen Servant für niedrige Priorität. Ziel ist es, die Arbeit entsprechend der Priorität innerhalb desselben Servers aufzuteilen.