Domanda

Q1. Capisco quando abbiamo bisogno di trattare con più database, abbiamo bisogno di usare transazione globale. ma da questo post http://fogbugz.atomikos.com/default.asp . la persona ha suggerito basta usare primavera AOP di consigliare sulla diversa TransactionManager (più> origine dati / SessionFactory). qualcuno può spiegare in che tipo di situazione si può semplicemente utilizzare questo approccio e in che tipo di situazione abbiamo bisogno XA (transazione globale) con atomikos o JOTM o ejb..etc

È stato utile?

Soluzione

Se lei si riferisce a questo messaggio http: //fogbugz.atomikos. ? com / default.asp community.6.596.2 , poi la parte importante della questione dal PO è:

  

L'attività può essere un insieme di comandi SQL contro DataSource1 o datasource2.

In altre parole, il PO non mobilitare più risorse transazionali, userà uno o l'altro (ed esplicitamente scrive che egli non ha veramente bisogno XA-supporto). Così, egli non ha veramente bisogno globale supporta le transazioni, avrebbe potuto usare solo e utilizzando un gestore delle transazioni J2EE è non è obbligatoria per le transazioni locali la sua caso d'uso.

E questo è ciò che la risposta sta suggerendo: utilizzando Atomikos non è una condizione necessaria e potrebbe essere eccessivo.

Utilizzando due dataSource, due txManager, due txAdvice e definente distinta Elementi <aop:advisor/> con differenti 'pointcut' e 'advice-ref' valori di attributo permetterebbe di applicare totalmente differente configurazione transazionale per diversi strati servizio oggetti / metodi.

Si veda la sezione 9.5 .4. Configurazione dei diversi semantica transazionale per diversi fagioli per i dettagli.

Ma se avete bisogno di lavorare con più risorse transazionali (basi di dati tipicamente relazionali e code di messaggi), quindi è necessario sostegno transazioni globali che significa un gestore delle transazioni J2EE (fornito da un server applicativo J2EE o stand-alone come Atomikos, JBossTS, JOTM, ecc).

Altri suggerimenti

Credo che Pascal ha risposto bene alla tua domanda, ma voglio provare e semplificare / riassumerla.

  • Se è necessario eseguire parallela, le attività indipendenti su origini dati senza l'obbligo ambito transazionale (ad esempio, se quando una transazione non riesce in una datasource, si doens't devono rollback in altri), utilizzare il suggerimento di Pascal o l'approccio in http://fogbugz.atomikos.com/default.asp?community.6.596 .2 (ad esempio mancata JTA / XA non / non distribuiti)

  • Se avete bisogno di un ambito di transazione attraversato diverse origini dati, ad esempio, se un rollback in in una datasource dovrebbe annullare le modifiche apportate in un'altra origine dati underthe stesso ambito transazione logica, (ad esempio database di banca e banca dati di carta di credito a fare il trasferimento di fondi, non è possibile ottenere un decreese / increese in uno senza un rispettivo increese / decreese nell'altro) è necessario un gestore delle transazioni JTA (XA / distribuito)

Spero che questo rende il quadro più chiaro (sono aperto per i commenti se oltre semplificato o semplicemente sbagliato)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top