# WS-Transaction

WS-Transaction ist ein Standard aus dem Kontext der sogenannten WS-*-Spezifikationen. WS-Transaction zielt darauf ab, das vor allem aus Datenbanken bekannte Prinzip von Transaktionen auch für Webservices bereitzustellen. Dazu besteht der Standard aus drei Unterspezifikationen.

## Unterspezifikationen
### WS-Coordination

WS-Coordination beschreibt ein erweiterbares Framework, das Protokolle zur Verfügung stellt, die es ermöglichen Aktionen verteilter Anwendungen miteinander zu koordinieren. Dabei beinhaltet es neben den Anforderungen an Services, die WS-Transaction nutzen sollen, auch eine genaue Struktur, die es ermöglicht, über die Grenzen von heterogenen Systemen hinweg Transaktionen umzusetzen. Die Spezifikation schreibt vor, dass es immer einen Koordinator geben muss, bei dem sich die jeweiligen Webservices registrieren.
WS-Coordination kann auch unabhängig von WS-Transaction genutzt werden, da der Standard so flexibel ausgelegt ist, dass er Anwendungsfälle beliebiger Art im Kontext von verteilten Anwendungen abdecken kann.

### WS-AtomicTransaction

WS-AtomicTransaction setzt auf WS-Coordination auf, indem es nur noch die konkreten Protokolle spezifiziert. Dabei richtet sich WS-AtomicTransaction speziell an kurz laufende Transaktionen, für die die sogenannten ACID-Eigenschaften wichtig sind. Konkret enthält es folgende Protokolle:
* Completion
* Volatile Two-Phase Commit
* Durable Two-Phase Commit
Eine WS-Methode kann hinsichtlich der zu unterstützenden Transaktionseigenschaften wie folgt konfiguriert werden:
* Required: Wenn sich der Client schon in einem gültigen Transaktionskontext befindet, so wird die Methode innerhalb dieses Transaktionskontextes ausgeführt. Ansonsten wird eine neue Transaktion gestartet
* RequiresNew: Wenn sich der Client schon in einem gültigen Transaktionskontext befindet, so wird die transaktion suspended und die Methode innerhalb einer neuen Transaktion ausgeführt. Nach Beendigung der Methode wird die neue Transaktion ebenfalls beendet und die vorherige Transaktion resumed. Ansonsten wird eine neue Transaktion gestartet.
* Mandatory: Der Client muss sich in einem gültigen Transaktionskontext befinden.
* NotSupported: Falls sich der Client innerhalb einer Transaktion befindet, wird diese suspended und nach Beendigung der Methode wieder resumed.
* Supports: Falls sich der Client innerhalb einer Transaktion befindet wird diese verwendet, ansonsten wird die Methode nicht in einer Transaktion ausgeführt.
* Never: Die Methode darf nicht innerhalb einer Transaktion aufgerufen werden.

### WS-BusinessActivity

WS-BusinessActivity richtet sich im Gegensatz zu WS-AtomicTransaction an länger laufende Geschäftstransaktionen, beinhaltet aber ebenso nur noch die konkreten Protokolle für WS-Coordination. Konkret enthält es folgende zwei Protokolle:
* BusinessAgreementWithParticipantCompletion
* BusinessAgreementWithCoordinatorCompletion
Wichtig hierbei ist es, dass die Ressourcen nicht „gelockt“ werden können, da die „Transaktionen“ länger laufen. Aus diesem Grund gibt es für den Fehlerfall sogenannte Compensation Activities, die die bereits getätigten Änderungen wieder rückgängig machen sollen.

## Geschichte

Die Spezifikationen wurden von IBM, BEA Systems, Microsoft, Arjuna, Hitachi und IONA entwickelt und am 1. November 2004 vorgestellt. Nach einer Aktualisierung am 16. August 2005 wurde der Standard in der Version 1.1 auch als offizieller OASIS-Standard anerkannt.