2015-01-05 13 views

risposta

22

Una transazione XA, nei termini più generali, è una "transazione globale" che può estendersi su più risorse. Una transazione non XA comporta sempre una sola risorsa.

Una transazione XA comporta un gestore transazioni di coordinamento, con uno o più database (o altre risorse, come JMS) tutti coinvolti in un'unica transazione globale. Le transazioni non XA non hanno un coordinatore di transazioni e una singola risorsa sta eseguendo autonomamente tutte le sue transazioni (a volte vengono chiamate transazioni locali).

jta = "true", Transaction commit automaticamente.

11

Mi stavo chiedendo da solo (opzione "usa JTA" in un'origine dati non XA), quindi ho provato diverse configurazioni. Ho una transazione distribuita che si connette a due server MySQL.

Ecco i risultati. Se ho:

  1. Due origini dati non-XA, entrambi hanno JTA = "true"

Risultato: "Non è stato possibile integrare in transazione entrando oggetto meta-aware" Errore

  1. due non-XA origini dati, con uno JTA = "true"

Risultato: Essi non partecipare alla transazione distribuita. Ognuno si impegnerà separatamente.

  1. One XA e uno non-XA con JTA = "false",

Risultato: come # 2

  1. Uno XA e uno non XA con JTA = "true".

Risultato: Funziona!

Da questi, sembra che l'opzione "usa JTA" indica se parteciperà a una transazione distribuita se esiste un'origine dati XA.

Problemi correlati