Quelle est la différence entre JTA et une transaction locale?

Quelle est la différence entre JTA et une transaction locale?

un exemple qui montre quand utiliser JTA et quand utiliser une transaction locale serait génial.

78
jta
demandé sur Arjan Tijms 2012-03-04 09:58:58

4 réponses

JTA est une API générale pour gérer les transactions en Java. Il vous permet de démarrer, commit et rollback transaction dans une ressource de manière neutre. L'état transactionnel est typiquement stocké dans TLS (Thread Local Storage) et peut être propagé à d'autres méthodes dans une pile d'appels sans avoir besoin d'un quelconque objet de contexte explicite à transmettre. Transactionnelle ressources peuvent vous joindre à l'opération. Si plus d'une ressource participe à une telle opération, au moins une d'entre eux doit être une soi-disant ressource XA.

A resource local transaction est une transaction que vous avez avec une ressource unique spécifique en utilisant sa propre API spécifique. Une telle transaction ne se propage généralement pas à d'autres méthodes dans une pile d'appels et vous devez passer un objet de contexte explicite. Dans la majorité des transactions de ressources locales, il n'est pas possible d'avoir plusieurs ressources qui participent à la même transaction.

utilisez une ressource locale dans par exemple un code JDBC de bas niveau en Java SE. Ici, l'objet contextuel est exprimé par une instance de java.sql.Connection . D'autres exemples de transactions locales de ressources sont les développeurs qui créent des applications d'entreprise vers 2002. Puisque les gestionnaires de transactions (utilisés par JTA) étaient coûteux, source fermée et choses compliquées à mettre en place autour de cette époque, les gens sont allés avec le moins cher et plus facile d'obtenir des ressources locales variantes.

vous utiliseriez un Transaction JTA dans pratiquement tous les autres scénarios. Des serveurs très simples, petits, libres et open-source comme TomEE (25MB) ou GlassFish (35MB) ont le support JTA hors de la boîte. Il n'y a rien à installer et ils fonctionnent, tout Simplement.

enfin, des technologies comme EJB et Spring rendent même JTA plus facile à utiliser en offrant declarative transactions . Dans la plupart des cas, il est conseillé d'utiliser celles-ci car elles sont plus faciles, plus propres et moins sujettes aux erreurs. EJB et Spring peuvent utiliser JTA sous les couvercles.

121
répondu Arjan Tijms 2012-03-04 09:19:33
Le type de Transaction

doit être défini à" RESOURCE_LOCAL "pour L'application Java SE et à" JTA " pour L'application Java EE. "RESOURCE_LOCAL" peut très bien fonctionner sur une application web déployée sur Tomcat, mais peut causer des problèmes lorsque vous exécutez votre application dans un environnement glassfish.

si vous travaillez sur des transactions distribuées, vous devez utiliser" JTA " comme gestionnaire de transactions.

2
répondu Mayank Jalotra 2016-02-04 07:12:05

L'API Java Transaction API (JTA) est l'une des API Java Enterprise Edition (Java EE).

1
répondu Nitin 2013-06-29 11:02:59

J2EE application includes suppoart fot through 2 specifications

JTA - - - > Java Transaction API.mise en œuvre de haut niveau et est toujours activé

JTS - - - > Java Transaction Service.

-1
répondu feel good and programming 2014-02-24 10:23:21