Zum Inhalt springen

„Jakarta Transactions API“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Denglischen Ausdruck ersetzt
Das ist ein eigentständiger Satz.
 
(31 dazwischenliegende Versionen von 22 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Infobox Software
Die '''Java Transaction API''' ('''JTA''') ist ein von [[Sun Microsystems|Sun]] implementiertes [[Interface]] zur Kontrolle von Datenmanipulationen in einer [[Datenbank]]. JTA selbst kann keine [[Transaktion (Informatik)|Transaktionen]] vornehmen, sondern bietet lediglich standardisierte Methoden zur Kontrolle von Transaktionen.
| Name = Java Transaction API
| Logo =
| Screenshot =
| Beschreibung = <!-- Beschreibung des Screenshots! -->
| Maintainer = [[Java Community Process]]
| Hersteller = [[Sun Microsystems]]
| Management = [[Java Community Process]]
| AktuelleVersion = 1.1.
| AktuelleVersionFreigabeDatum = 1. November 2002
| AktuelleVorabVersion =
| AktuelleVorabVersionFreigabeDatum =
| Betriebssystem = [[plattformunabhängig]]
| Programmiersprache = [[Java (Programmiersprache)]]
| Kategorie = [[Programmierschnittstelle]]
| Lizenz = [[Common Development and Distribution License]]
| Deutsch =
| Website = [http://www.oracle.com/technetwork/java/javaee/jta/index.html oracle.com/technetwork/java/javaee/jta]
}}


'''Jakarta Transactions API''' (JTA; früher Java Transaction API) ist eine von [[Sun Microsystems|Sun]] und dem [[Java Community Process]] spezifizierte [[Programmierschnittstelle]] (API), welche den Einsatz verteilter [[Transaktion (Informatik)|Transaktionen]] über mehrere [[X/Open XA|XA]]-Ressourcen unter [[Java (Programmiersprache)|Java]] ermöglicht.<ref>Susan Cheung, Vlada Matena: [http://download.oracle.com/otn-pub/jcp/jta-1.1-spec-oth-JSpec/jta-1_1-spec.pdf ''Java Transaction API 1.1 Spezifikation''] (PDF) 1. September 2002</ref>
Die JTA-Bibliothek ist in so gut wie allen [[J2EE]]-Containern integriert. Da JTA lediglich aus Interfaces besteht, wird der [[Java (Technik)|Java]]-Entwickler meist mit JTA über [[Framework]]s wie [[Hibernate (Framework)|Hibernate]], [[Spring (Framework)|Spring]], [[Glassfish]] oder [[TopLink]] in Berührung kommen. Diese Frameworks implementieren (bzw. benötigen) die JTA-Interfaces, sodass sie ein kontrolliertes Transaktions-Management gewährleisten können.


== Aufgaben ==
Transaktions-Management ist ein wichtiger Bestandteil geschäftskritischer DV-Anwendungen. Es zeichnet u.a. dafür verantwortlich, dass Transaktionen nur dann die Persistenz-Schicht(Datenbank) einer Anwendung dauerhaft manipulieren, wenn sie vollkommen fehlerfrei abgeschlossen werden können. Exakt dies leistet die Implementierung von JTA. Andere Kriterien wie [[Threadsicherheit]] (Nebenläufigkeit), also beispielsweise die Vermeidung von Race-Hazards, fallen nicht in den Zuständigkeitsbereich von JTA.
Transaktions-Management ist ein wichtiger Bestandteil geschäftskritischer DV-Anwendungen. Es ist u.&nbsp;a. dafür verantwortlich, dass Transaktionen nur dann die in einer Datenbank gespeicherten Daten einer Anwendung dauerhaft ändern, wenn sie vollkommen fehlerfrei abgeschlossen werden können.


Transaktionen sind jedoch nicht nur gegen einzelne Datenbanken notwendig, sondern auch gegenüber anderen Ressourcen (wie z.&nbsp;B. Messaging Systemen). Ebenfalls oft notwendig sind verteilte Transaktionen. Das sind Transaktionen, die gegenüber mehrere Ressourcen (z.&nbsp;B. mehrere Datenbanken) gleichzeitig laufen. Exakt dies leistet die Implementierung von JTA. Andere Kriterien wie [[Threadsicherheit]] (Nebenläufigkeit), also beispielsweise die Vermeidung von [[Race Condition]]s, fallen nicht in den Zuständigkeitsbereich von JTA.
Da sich eine Transaktion aus verschiedenen Aktionen/Abfragen (abhängig von wiederum verschiedenen Bedingungen) zusammensetzt, kann sich ein Fehler oder eine Unzulänglichkeit inmitten des Ablaufes der Transaktion ereignen, das heißt auch dann, wenn bereits Manipulationen an der Persistenzschicht vorgenommen wurden (beispielsweise könnte ein Käufer sich ganz am Ende als zahlungsunfähig erweisen, die Transaktion kann daher nicht erfolgreich abgeschlossen werden; die Ware musste aber schon als gekauft markiert werden, um anderen Käufern denselben Artikel nicht noch einmal anzubieten). In einem solchen Fehlerfalle ist es notwendig, ein ''[[Rollback]]'' auszuführen, um die Daten der Anwendung konsistent zu halten. Der Transaktions-Manager führt also erst dann das ''[[Commit]]'' an der Datenbank durch, wenn die Transaktion vollständig und einwandfrei ausgeführt werden konnte.

== Funktionsweise und Einsatz ==
JTA selbst definiert die Schnittstelle (Interfaces und Exception-Klassen), über die Java-Programme mit Transaktionsmanagern kommunizieren können. Transaktionsmanager ihrerseits implementieren üblicherweise die [[Java Transaction Service|Java-Transaction-Service]]-Programmierschnittstelle (JTS), welche die Standardschnittstelle für JTA-fähige Transaktionsserver darstellt. JTS selbst ist eine Spezifikation für Transaktionsmanager, welche die JTA-Spezifikation auf Kommunikationsebene und die OMG-Object-Transaction-Services-Spezifikation (OTS) für das Java-Mapping implementiert.<ref>Susan Cheung: [http://www.oracle.com/technetwork/java/javaee/jts-spec095-1508547.pdf ''Java Transaction Service (JTS) Spezifikation''] (PDF; 62&nbsp;kB) 1. Dezember 1999</ref>

Die JTA basiert auf dem [[X/Open XA|X/Open-XA]]-Standard, der eine von der [[Open Group]] herausgegebene Spezifikation für Distributed Transaction Processing, die Abarbeitung von über mehrere Systeme verteilten Transaktionen ist. Dieser Standard sieht den Einsatz eines Transaktionsmanagers für die Koordination von Transaktionen über mehrere Ressourcen vor. Die Ressourcen selbst bieten typischerweise ihre eigenen Schnittstellen für die Behandlung von Transaktionen (beispielsweise Transaktionen über die [[Java Database Connectivity|JDBC]]-[[SQL]] Schnittstelle bei Datenbanken). Darüber hinaus müssen sie aber für X/Open XA auch noch das XA-Protokoll implementieren, erst dann nennt man eine Ressource „XA-compliant“. Mittels des [[Zwei-Phasen-Commit-Protokoll]]s stellt der X/Open-XA-Standard sicher, dass eine über unterschiedliche Ressourcen verteilte Transaktion auch korrekt abläuft.

Die Java Transaction API ist eine der Programmierschnittstellen der [[Java Platform, Enterprise Edition]] und somit zwingender Bestandteil aller Java-[[Anwendungsserver]]. Bei der Verwendung der [[Java Platform, Standard Edition]] muss hingegen ein JTA-fähiger Transaktionsmanager hinzugezogen werden. Beispiele dafür sind TransactionsEssentials von Atomikos oder der Java Open Transaction Manager (JOTM) – siehe Weblinks.

Üblicherweise wird in der Entwicklung nicht direkt gegen die JTA programmiert, sondern über [[Framework]]s wie [[Spring (Framework)|Spring]], [[Hibernate (Framework)|Hibernate]] oder [[TopLink]]. Diese Frameworks können mittels JTA ein kontrolliertes Transaktions-Management über verteilte Ressourcen gewährleisten, ohne dass der Entwickler mit der Komplexität der JTA in Berührung kommt.

== Geschichte ==
Die Java Transaction API wurde von [[Sun Microsystems|Sun]] und dem [[Java Community Process]] unter dem [[Java Specification Request]] (JSR) 907 entwickelt. Die erste Version der JTA wurde gemeinsam mit der JTS Spezifikation im Dezember 1999 verabschiedet. Die minimal verbesserte Version 1.0.1 wurde am 27. September 2001 fertiggestellt. Die aktuelle Version ist JTA 1.1 vom 1. November 2002.

== Siehe auch ==
* [[Java Transaction Service]]


== Weblinks ==
== Weblinks ==
* [http://java.sun.com/products/jta/javadocs-1.0.1/index.html Javadoc] (englisch)
* [http://www.oracle.com/technetwork/java/javaee/jta/index.html Java Transaction API (JTA)] – Homepage der JTA (englisch)
* [http://jcp.org/en/jsr/summary?id=907 JSR 907: Java Transaction API (JTA)] – Homepage des JSRs zur JTA
* [http://www.atomikos.com/Main/TransactionsEssentials Atomikos open source JTA Implementierung]
* [http://jotm.ow2.org/xwiki/bin/view/Main/WebHome Java Open Transaction Manager]


== Einzelnachweise ==
[[Kategorie:Datenbankschnittstelle]]
<references />
[[Kategorie:Sun Microsystems]]


[[Kategorie:Datenbankschnittstelle]]
[[en:Java Transaction API]]
[[Kategorie:Parallelverarbeitung]]
[[es:Java Transaction API]]
[[fr:Java Transaction API]]
[[Kategorie:Java-Programmierschnittstelle]]
[[hu:Java Transaction API]]
[[ja:Java Transaction API]]
[[ko:자바 트랜잭션 API]]
[[nl:Java Transaction API]]
[[pt:Java Transaction API]]
[[ru:Java Transaction API]]

Aktuelle Version vom 16. September 2022, 09:29 Uhr

Java Transaction API
Basisdaten

Hauptentwickler Java Community Process
Entwickler Sun Microsystems
Aktuelle Version 1.1.
(1. November 2002)
Betriebssystem plattformunabhängig
Programmier­sprache Java (Programmiersprache)
Kategorie Programmierschnittstelle
Lizenz Common Development and Distribution License
oracle.com/technetwork/java/javaee/jta

Jakarta Transactions API (JTA; früher Java Transaction API) ist eine von Sun und dem Java Community Process spezifizierte Programmierschnittstelle (API), welche den Einsatz verteilter Transaktionen über mehrere XA-Ressourcen unter Java ermöglicht.[1]

Transaktions-Management ist ein wichtiger Bestandteil geschäftskritischer DV-Anwendungen. Es ist u. a. dafür verantwortlich, dass Transaktionen nur dann die in einer Datenbank gespeicherten Daten einer Anwendung dauerhaft ändern, wenn sie vollkommen fehlerfrei abgeschlossen werden können.

Transaktionen sind jedoch nicht nur gegen einzelne Datenbanken notwendig, sondern auch gegenüber anderen Ressourcen (wie z. B. Messaging Systemen). Ebenfalls oft notwendig sind verteilte Transaktionen. Das sind Transaktionen, die gegenüber mehrere Ressourcen (z. B. mehrere Datenbanken) gleichzeitig laufen. Exakt dies leistet die Implementierung von JTA. Andere Kriterien wie Threadsicherheit (Nebenläufigkeit), also beispielsweise die Vermeidung von Race Conditions, fallen nicht in den Zuständigkeitsbereich von JTA.

Funktionsweise und Einsatz

[Bearbeiten | Quelltext bearbeiten]

JTA selbst definiert die Schnittstelle (Interfaces und Exception-Klassen), über die Java-Programme mit Transaktionsmanagern kommunizieren können. Transaktionsmanager ihrerseits implementieren üblicherweise die Java-Transaction-Service-Programmierschnittstelle (JTS), welche die Standardschnittstelle für JTA-fähige Transaktionsserver darstellt. JTS selbst ist eine Spezifikation für Transaktionsmanager, welche die JTA-Spezifikation auf Kommunikationsebene und die OMG-Object-Transaction-Services-Spezifikation (OTS) für das Java-Mapping implementiert.[2]

Die JTA basiert auf dem X/Open-XA-Standard, der eine von der Open Group herausgegebene Spezifikation für Distributed Transaction Processing, die Abarbeitung von über mehrere Systeme verteilten Transaktionen ist. Dieser Standard sieht den Einsatz eines Transaktionsmanagers für die Koordination von Transaktionen über mehrere Ressourcen vor. Die Ressourcen selbst bieten typischerweise ihre eigenen Schnittstellen für die Behandlung von Transaktionen (beispielsweise Transaktionen über die JDBC-SQL Schnittstelle bei Datenbanken). Darüber hinaus müssen sie aber für X/Open XA auch noch das XA-Protokoll implementieren, erst dann nennt man eine Ressource „XA-compliant“. Mittels des Zwei-Phasen-Commit-Protokolls stellt der X/Open-XA-Standard sicher, dass eine über unterschiedliche Ressourcen verteilte Transaktion auch korrekt abläuft.

Die Java Transaction API ist eine der Programmierschnittstellen der Java Platform, Enterprise Edition und somit zwingender Bestandteil aller Java-Anwendungsserver. Bei der Verwendung der Java Platform, Standard Edition muss hingegen ein JTA-fähiger Transaktionsmanager hinzugezogen werden. Beispiele dafür sind TransactionsEssentials von Atomikos oder der Java Open Transaction Manager (JOTM) – siehe Weblinks.

Üblicherweise wird in der Entwicklung nicht direkt gegen die JTA programmiert, sondern über Frameworks wie Spring, Hibernate oder TopLink. Diese Frameworks können mittels JTA ein kontrolliertes Transaktions-Management über verteilte Ressourcen gewährleisten, ohne dass der Entwickler mit der Komplexität der JTA in Berührung kommt.

Die Java Transaction API wurde von Sun und dem Java Community Process unter dem Java Specification Request (JSR) 907 entwickelt. Die erste Version der JTA wurde gemeinsam mit der JTS Spezifikation im Dezember 1999 verabschiedet. Die minimal verbesserte Version 1.0.1 wurde am 27. September 2001 fertiggestellt. Die aktuelle Version ist JTA 1.1 vom 1. November 2002.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Susan Cheung, Vlada Matena: Java Transaction API 1.1 Spezifikation (PDF) 1. September 2002
  2. Susan Cheung: Java Transaction Service (JTS) Spezifikation (PDF; 62 kB) 1. Dezember 1999