Javanische Transaktions-API

Java Transaction API (JTA), eine der javanischen Unternehmensausgabe (Java EE) APIs, ermöglicht verteilten Transaktionen, über vielfache XA Mittel in einer javanischen Umgebung getan zu werden. JTA ist eine Spezifizierung, die unter dem javanischen Gemeinschaftsprozess als JSR 907 entwickelt ist. JTA sorgt:

  • Abgrenzung von Transaktionsgrenzen
  • X/Open XA API-Erlauben-Mittel, an Transaktionen teilzunehmen.

X/Open XA Architektur

Im X/Open XA Architektur, ein Transaktionsbetriebsleiter oder Transaktionsverarbeitungsmonitor (TP Monitor), koordiniert die Transaktionen über vielfache Mittel wie Datenbanken und Nachrichtenwarteschlangen. Jede Quelle hat seinen eigenen Betriebsleiter. Der Quellenbetriebsleiter hat normalerweise seine eigene API, für die Quelle, zum Beispiel die JDBC durch Verwandtschaftsdatenbanken verwendete API zu manipulieren. Außerdem erlaubt der Quellenbetriebsleiter einem TP-Monitor, eine verteilte Transaktion zwischen seinen eigenen und anderen Quellenbetriebsleitern zu koordinieren. Schließlich gibt es die Anwendung, die mit dem TP-Monitor kommuniziert, um zu beginnen, zu begehen, oder rollback die Transaktionen. Die Anwendung kommuniziert auch mit den individuellen Mitteln mit ihrer eigenen API, um die Quelle zu modifizieren.

JTA Durchführung des X/Open XA Architektur

Die JTA API besteht aus Klassen in zwei javanischen Paketen:

Der JTA wird auf dem X/Open XA Architektur modelliert, aber es definiert zwei verschiedene APIs, um Transaktionsgrenzen abzugrenzen. Es unterscheidet zwischen einem Anwendungsserver wie ein EJB Server und einem Anwendungsbestandteil. Es stellt eine Schnittstelle zur Verfügung, der durch den Anwendungsserver selbst verwendet wird, um zu beginnen, zu begehen, und rollback die Transaktionen. Es stellt eine verschiedene Schnittstelle, zur Verfügung, der durch den allgemeinen Kundencode wie ein servlet oder ein EJB verwendet wird, um die Transaktionen zu führen.

Die JTA Architektur verlangt, dass jeder Quellenbetriebsleiter die Schnittstelle durchführen muss, um durch den TP-Monitor geführt zu werden. Wie festgesetzt, vorher wird jede Quelle seine eigene spezifische API zum Beispiel haben:

  • Verwandtschaftsdatenbanken verwenden JDBC
  • Nachrichtenübermittlungsdienstleistungen verwenden JMS
  • verallgemeinerte EIS (Unternehmensinformationssystem) Mittel verwenden Java EE Stecker-API.

Javanische Transaktions-API

Die javanische Transaktions-API besteht aus drei Elementen: eine Anwendung auf höchster Ebene

Transaktionsabgrenzungsschnittstelle ein Transaktionsbetriebsleiter auf höchster Ebene hat Schnittstelle beabsichtigt

für einen Anwendungsserver und ein normales Java, das des X/Open XA Protokoll kartografisch darstellt

beabsichtigt für einen transactional Quellenbetriebsleiter.

Schnittstelle von UserTransaction

Der javax.transaction. Schnittstelle von UserTransaction stellt der Anwendung den zur Verfügung

Fähigkeit, Transaktionsgrenzen programmatisch zu kontrollieren. Diese Schnittstelle kann verwendet werden

durch javanische Kundenprogramme oder EJB Bohnen.

Die UserTransaction.begin Methode fängt eine globale Transaktion an und vereinigt den

Transaktion mit dem Benennen-Faden. Die Vereinigung der Transaktion zum Faden wird geführt

durchsichtig durch den Transaktionsbetriebsleiter.

Die Unterstützung für verschachtelte Transaktionen ist nicht erforderlich. Die UserTransaction.begin Methode

wirft NotSupportedException, wenn der Benennen-Faden bereits vereinigt wird

mit einer Transaktion und dem Transaktionsbetriebsleiter unterstützt Durchführung nicht hat verschachtelt

Transaktionen.

Die Transaktionszusammenhang-Fortpflanzung zwischen Anwendungsprogrammen wird durch den zur Verfügung gestellt

der zu Grunde liegende Transaktionsbetriebsleiter Durchführungen auf dem Kunden und den Server-Maschinen.

Das für die Fortpflanzung verwendete Transaktionszusammenhang-Format ist Protokoll-Abhängiger und muss sein

verhandelt zwischen dem Kunden und den Server-Gastgebern. Zum Beispiel, wenn der Transaktionsbetriebsleiter

ist eine Durchführung der JTS Spezifizierung, es wird den Transaktionszusammenhang verwenden

Fortpflanzungsformat, wie angegeben, im CORBA OTS 1.1 Spezifizierung. Transaktion

Fortpflanzung ist zu Anwendungsprogrammen durchsichtig.

UserTransaction unterstützen im EJB Server

EJB Server sind erforderlich, die Schnittstelle von UserTransaction für den Gebrauch durch EJB zu unterstützen

Bohnen mit dem BOHNEN-Wert in der @TransactionManagement Anmerkung (wird das bohnengeführte Transaktionen oder BMT genannt). UserTransaction

Schnittstelle wird zu EJB Bestandteilen durch irgendeinen die EJBContext-Schnittstelle mit dem ausgestellt

GetUserTransaction-Methode, oder direkt über die Einspritzung mit der allgemeinen @Resource Anmerkung. So verbindet eine EJB Anwendung mit dem nicht

Transaktionsbetriebsleiter direkt für die Transaktionsabgrenzung; statt dessen verlässt sich die EJB Bohne

auf dem EJB Server, um Unterstützung für ganze seine Transaktion zur Verfügung zu stellen, arbeiten wie definiert, im

Unternehmen Spezifizierung von JavaBeans. (Die zu Grunde liegende Wechselwirkung zwischen dem EJB

Server und der TM sind zur Anwendung durchsichtig; die Last, Transaktionsmanagement durchzuführen, ist auf dem EJB Behälter und Server-Versorger.)

Die Codeprobe illustriert unten den Gebrauch von UserTransaction über bohnengeführte Transaktionen in einer EJB Sitzungsbohne:

@Stateless

@TransactionManagement (BOHNE)

öffentliche Klasse ExampleBean {\

@Resource

privater UserTransaction utx;

öffentliche Leere foo {\

//fangen Sie eine Transaktion an

utx.begin ;

//Arbeiten Sie wirklich

//Begehen Sie es

utx.commit ;

}\

}\</Quelle>

Wechselweise kann UserTransaction bei SessionContext erhalten werden:

@Stateless@TransactionManagement (BOHNE)öffentliche Klasse ExampleBean {\ @Resource

privater SessionContext ctx;

öffentliche Leere foo {\

UserTransaction utx = ctx.getUserTransaction ;

//fangen Sie eine Transaktion an utx.begin ; //Arbeiten Sie wirklich //Begehen Sie es utx.commit ; }\}\</Quelle>

Bemerken Sie, obwohl das im Beispiel oben, wenn der @TransactionManagement (BOHNE) Anmerkung, eine JTA Transaktion weggelassen wird, automatisch angefangen wird, wann auch immer foo genannt wird und automatisch begangen oder wiederholt wird, wenn über foo geherrscht wird. Von UserTransaction Gebrauch zu machen, ist so in der EJB-Programmierung nicht notwendig, aber könnte für den sehr spezialisierten Code erforderlich sein.

UserTransaction unterstützen in JNDI

UserTransaction sollte unter verfügbar sein (wenn eine JTA Durchführung in der Umgebung installiert wird).

UserTransaction unterstützen in Java SE

Sie brauchen kein Java EE Anwendungsserver notwendigerweise, um JTA oder Funktionalität von UserTransaction zu haben. Wie viele andere Teile Javas EE API, JTA Tonnen, die auf einem Behälter von Servlet wie Kater oder Wellenbrecher gestützt sind. Jedoch, obwohl die Macht und Zuverlässigkeit von JTA in solchen Umgebungen bereitgestellt werden können, bleiben die Durchsichtigkeit und Bequemlichkeit des Gebrauches von Aussagetransaktionen ein Aktivposten von Anwendungsservern. Wechselweise, Nichtjava EE Anwendungsserver kann oben auf einem Behälter wie der Frühling gebaut werden, der ein sehr ähnliches Paradigma geben kann, um zuverlässige javanische Anwendungen gerade mit einer verschiedenen API zu entwickeln.

Opensource JTA Durchführungen

Dort bestehen Sie mehrere aktive (bezüglich des Septembers 2010) opensource JTA Durchführungen.

JBossTS

JBossTS, früher bekannt als der Arjuna Transaktionsdienst, kommt mit einer sehr robusten Durchführung, die sowohl den JTA als auch JTS APIs unterstützt. JBossTS kommt mit einem Bergungsdienst, der als ein getrennter Prozess von Ihren Anwendungsprozessen geführt werden konnte. JBossTS ist der Verzug-Transaktionsbetriebsleiter für JBoss ALS. Es unterstützt Kasten-Integration "aus" mit dem Frühlingsfachwerk nicht, aber es ist leicht zu integrieren.

Atomikos TransactionsEssentials

Die Dokumentation der JTA Durchführung von Atomikos und Literatur im Internet zeigen, dass es eine Produktionsqualitätsdurchführung ist, die auch Wiederherstellung und einige exotische Eigenschaften außer der JTA API unterstützt. Atomikos stellt der Sprungfeder-Integration zusammen mit einigen netten Beispielen zur Verfügung. Es stellt auch Unterstützung für vereinte Verbindungen sowohl für die Datenbank als auch für JMS Mittel zur Verfügung.

Bitronix JTA

Bitronix behauptet, Transaktionswiederherstellung so gut zu unterstützen, wie oder noch besser als einige der kommerziellen Produkte. Bitronix stellt auch das Verbindungsvereinigen und die Sitzung zur Verfügung, die aus dem Kasten ein Kartell bildet.

Siehe auch

Links


Murasaki Shikibu / JTA
Impressum & Datenschutz