2015-10-18 11 views
9

ho bisogno di gestire le molteplici risorse nella mia applicazione come JMS e banca datiDifferenza tra JtaTransactionManager e ChainedTransactionManager?

Guardando gestori di transazioni che possono rogna più risorse mi sono imbattuto in 2 gestori di transazioni JtaTransactionManager e ChainedTransactionManager che quasi reclami possono gestire più risorse.

Qualcuno può spiegare qual è la principale differenza in loro? e quando dovrei usare quale?

risposta

3

Come documentazione dice: ChainedTransactionManger doc:

implementazione PlatformTransactionManager che orchestra la creazione di transazione, si impegna e rollback a un elenco di delegati. L'utilizzo di questa implementazione presuppone che gli errori che causano il rollback della transazione avvengano solitamente prima del completamento della transazione o durante il commit del PlatformTransactionManager più interno. Le istanze configurate avvieranno le transazioni nell'ordine specificato e commit/rollback in ordine inverso, il che significa che PlatformTransactionManager con maggiore probabilità di interrompere la transazione dovrebbe essere l'ultimo nell'elenco configurato. Un PlatformTransactionManager che genera un'eccezione durante il commit causerà automaticamente il rollback dei restanti gestori delle transazioni anziché l'accettazione.

Ciò significa che è possibile creare un ChainedTransactionManager passando ad esso diversi transactionmanager. Se un'eccezione si verifica ad una mangiatoia transazione rollback verrà generato per tutti i gestori di transazioni nell'ordine inverso sono specificati

JtaTransactionManager doc:

implementazione PlatformTransactionManager per JTA, delegando a un provider di backend JTA. Viene in genere utilizzato per delegare a un coordinatore di transazioni di un server Java EE, ma può anche essere configurato con un provider JTA locale incorporato nell'applicazione. Questo gestore transazioni è appropriato per la gestione di transazioni distribuite, ovvero transazioni che si estendono su più risorse e per controllare le transazioni sulle risorse del server applicazioni (ad esempio, JDBC DataSource disponibili in JNDI) in generale. Per un singolo DataSource JDBC, DataSourceTransactionManager è perfettamente sufficiente e, per accedere a una singola risorsa con Hibernate (inclusa la cache transazionale), HibernateTransactionManager è appropriato, ad esempio.

È possibile utilizzare questo gestore delle transazioni per la gestione delle transazioni distribuite per diverse risorse