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.
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.
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.
L'API Java Transaction API (JTA) est l'une des API Java Enterprise Edition (Java EE).
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.