2015-01-05 19 views

Antwort

22

Eine XA-Transaktion ist im Allgemeinen eine "globale Transaktion", die sich über mehrere Ressourcen erstrecken kann. Eine Nicht-XA-Transaktion umfasst immer nur eine Ressource.

Eine XA-Transaktion umfasst einen koordinierenden Transaktionsmanager mit einer oder mehreren Datenbanken (oder anderen Ressourcen wie JMS), die alle an einer einzigen globalen Transaktion beteiligt sind. Nicht-XA-Transaktionen haben keinen Transaktionskoordinator, und eine einzelne Ressource führt ihre gesamte Transaktionsarbeit selbst aus (dies wird manchmal als lokale Transaktion bezeichnet).

jta = "true", Transaktionsübergabe automatisch.

11

Ich frage mich selbst ("JTA" Option in einer nicht-XA Datenquelle), also habe ich mehrere Konfigurationen getestet. Ich habe eine verteilte Transaktion, die eine Verbindung zu zwei MySQL-Servern herstellt.

Hier sind meine Ergebnisse. Wenn ich habe:

  1. Zwei Nicht-XA-Datenquellen, haben beide JTA = "true"

Ergebnis: "können nicht in der Transaktion gewinnen beim Eintritt in meta-aware Objekt" Fehler

  1. Zwei Nicht-XA-Datenquellen, mit einem JTA = "true"

Ergebnis: Sie werden nicht in der verteilten Transaktion teilnehmen. Jeder wird separat begehen.

  1. One XA und ein Nicht-XA mit JTA = "false",

Ergebnis: wie # 2

  1. Ein XA und ein Nicht-XA mit JTA = "true".

Ergebnis: Funktioniert!

Von diesen sieht es aus wie "JTA verwenden" -Option zeigt an, ob es an einer verteilten Transaktion teilnehmen wird, wenn es eine XA-Datenquelle gibt.