JTA (Java transaction API)

Die Java Transaction API (JTA) spezifiziert eine gemeinsam von Sun sowie dem Java Community Process entworfene Programmierschnittstelle (API) in Java zur Steuerung von Transaktionen insbesondere im Umfeld verteilter Systeme. Dabei berücksichtigt JTA den X/Open XA-Standard für das Zusammenwirken verschiedener XA-Ressourcen - das können transaktionale Anwendungen, Datenbanken, Transaktions-Manager oder Application Server sein.


Die JTA ist Bestandteil der Java Enterprise Plattform ( Java Enterprise Edition) und somit immer auch Teil eines J2EE-kompatiblen Applikations-Servers. Sofern JTA im Umfeld der Java Standard Edition eingesetzt werden soll, muss in jedem Fall ein entsprechender Transaktions-Manager wie beispielsweise JOTM (Java Open Transaction Manager) eingebunden werden. JOTM ist ein als Open Source verfügbarer Transaktions-Manager, der eine Reihe von Middleware-Plattformen wie J2EE, CORBA, Webservices oder OSGi unterstützt. Die Definition der JTA ist Teil des Java Specification Request (JSR) Nummer 907, der ebenfalls unter dem u.g. Link verfügbar ist.

Transaktionen in JTA

Transaktionen zeichnen sich dadurch aus, dass sie nur dann die in einer Datenbank gehaltenen Daten dauerhaft ändern, wenn die einzelnen Phasen der Transaktion vollkommen fehlerfrei abgelaufen sind. Man spricht in diesem Zusammenhang auch von den ACID-Paradigmen einer Transaktion. Die Besonderheit verteilter Transaktionen ist es, dass diese nebenläufig auf mehreren Ressourcen wie zum Beispiel Datenbanken operieren. Verteilte Transaktionen werden auch als Distributed Transaction Processing (DTP) bezeichnet. Demzufolge wird auch eine komplexere Transaktionssteuerung benötigt - die JTA ist die sichtbare Schnittstelle zur Steuerung von Transaktionen, gegen die ein Entwickler programmiert. Die JTA spezifiziert Java-Interfaces und Exception-Klassen zwischen einem Transaktions-Manager und den Komponenten, die an der Transaktion beteiligt sind. Das können transaktionale Anwendungen, Manager von Ressourcen, Messaging Services oder ein Application Server sein. Die JTA kommuniziert also in jedem Fall immer mit einem Transaktions-Manager und wird dem Entwickler im Package javax.transaction zur Verfügung gestellt.

Java Transaction Services (JTS)

Im Zusammenhang mit der JTA ist aber noch der Begriff Java Transaction Services (JTS) wichtig. Diese Schnittstelle ist allerdings für den Entwickler einer Anwendung weniger interessant und auch nicht direkt sichtbar, da JTS im Transaktions-Manager zum Beispiel JOTM oder im Java EE Application Server direkt implementiert ist. Deshalb muss auch in der Java Standard Edition ein Transaktions-Manager mit eingebunden werden, der dann die Unterstützung für die JTA-Schnittstelle bietet. Der Transaktions-Manager implementiert dazu das Java-Mapping der OMG Object Transaction Service Specification. Zur Weiterleitung der Transkationen werden dabei CORBA Interfaces oder das Internet Inter-ORB Protocol (IIOP) verwendet.

Der X/Open XA-Standard ist Grundlage für die JTA. Die X/Open XA-Spezifikation definiert wiederum das Distributed Transaction Processing (DTP). Zentraler Bestandteil dieser Spezifikation ist der Transaktions-Manager, der die verteilten Transaktionen mit mehreren sogenannten Ressourcen organisiert. Diese Ressourcen implementieren ihrerseits das XA-Protocol, welches ein Two-Phase-Commit-Protocol ist. Dieses sorgt für die korrekte Durchführung einer verteilten Transaktion über mehrere Ressourcen hinweg.

Häufig wird in der Praxis jedoch der Weg beschritten, an Stelle der direkten Programmierung gegen die JTA-Interfaces ein komfortableres Framework wie zum Beispiel Hibernate, Spring oder andere einzusetzen, so dass der Anwendungs-Entwickler von der Komplexität der JTA entlastet wird.

http://java.sun.com/javaee/technologies/jta

http://jcp.org/en/jsr/summary?id=907

Informationen zum Artikel
Deutsch:
Englisch: Java transaction API - JTA
Veröffentlicht: 08.11.2013
Wörter: 514
Tags: #Java
Links: ACID (atomicity, consistency, isolation, durability), Anwendungsserver, API (application programming interface), CORBA (common object request broker architecture), Daten