2012-03-04 13 views

risposta

110

JTA è un'API generale per la gestione delle transazioni in Java. Consente di avviare, eseguire il commit e eseguire il rollback delle transazioni in modo neutrale rispetto alle risorse. Lo stato transazionale viene in genere memorizzato in TLS (Thread Local Storage) e può essere propagato ad altri metodi in uno stack di chiamate senza che sia necessario passare alcun oggetto di contesto esplicito. Le risorse transazionali possono unirsi alla transazione in corso. Se c'è più di una risorsa che partecipa a una tale transazione, almeno una di esse deve essere una cosiddetta risorsa XA.

A resource local transaction è una transazione che si ha con una singola risorsa specifica utilizzando la propria API specifica. In genere una transazione di questo tipo non si propaga ad altri metodi in uno stack di chiamate e si richiede di passare un oggetto di contesto esplicito in giro. Nella maggior parte delle transazioni locali della risorsa non è possibile avere più risorse che partecipano alla stessa transazione.

Si utilizzerà una transazione locale di risorse, ad esempio, nel codice JDBC di basso livello in Java SE. Qui l'oggetto contesto è espresso da un'istanza di java.sql.Connection. Altri esempi di transazioni locali di risorse sono gli sviluppatori che creano applicazioni aziendali intorno al 2002. Poiché i gestori delle transazioni (usati da JTA) erano costosi, closed source e cose complicate da configurare in quell'epoca, la gente andava con il più economico e facile da ottenere varianti locali di risorse.

Si utilizzerà una transazione JTA in praticamente tutti gli altri scenari. Server molto semplici, piccoli, gratuiti e open source come TomEE (25MB) o GlassFish (35MB) hanno il supporto JTA fuori dalla scatola. Non c'è niente da configurare e funzionano.

Infine, tecnologie come EJB e Spring rendono anche JTA più facile da utilizzare offrendo declarative transactions. Nella maggior parte dei casi si consiglia di utilizzare quelli in quanto sono più facili, più puliti e meno soggetti a errori. Sia EJB che Spring possono utilizzare JTA sotto le copertine.

+3

+1 per spiegare la storia e lo sviluppo degli usi JTA (EJB, Spring, ecc.). – Marco

1

Java Transaction API (JTA) è una delle API Java Enterprise Edition (Java EE) che consente di eseguire transazioni distribuite su più risorse XA in un ambiente Java.

-1

applicazioni J2EE include suppoart fot DT attraverso 2 specifiche
JTA ---> implementazione Java Transaction API.highe-livello ed è sempre attivata
JTS ---> Java Transaction servizio.

1

Il tipo di transazione deve essere impostato su "RESOURCE_LOCAL" per l'applicazione Java SE e su "JTA" per l'applicazione Java EE. "RESOURCE_LOCAL" potrebbe funzionare correttamente su alcune applicazioni Web distribuite su Tomcat, ma potrebbe causare problemi quando si esegue l'applicazione in ambiente glassfish.

Se si sta lavorando su transazioni distribuite, è necessario utilizzare "JTA" come gestore delle transazioni.

Problemi correlati