В чем разница между JTA и локальной транзакцией?


в чем разница между JTA и локальной транзакцией?

пример, который показывает, когда использовать JTA и когда использовать локальную транзакцию было бы здорово.

4 78

4 ответа:

JTA - Это общий API для управления транзакциями на Java. Он позволяет запускать, фиксировать и откатывать транзакции нейтральным для ресурсов способом. Состояние транзакции обычно хранится в TLS (локальное хранилище потоков) и может быть распространено на другие методы в стеке вызовов без необходимости передачи какого-либо явного объекта контекста. Транзакционные ресурсы могут присоединяться к текущей транзакции. Если в такой транзакции участвует более одного ресурса, то хотя бы один из них должен быть так называемый ресурс XA.

A resource local transaction - это транзакция, которая выполняется с определенным отдельным ресурсом с использованием его собственного API. Такая транзакция обычно не распространяется на другие методы в стеке вызовов, и вам необходимо передать некоторый явный объект контекста. В большинстве локальных транзакций ресурсов невозможно иметь несколько ресурсов, участвующих в одной транзакции.

вы бы использовали локальную транзакцию ресурса в например, низкоуровневый код JDBC в Java SE. Здесь объект контекста выражается экземпляром java.sql.Connection. Другими примерами локальных транзакций ресурсов являются разработчики, создающие корпоративные приложения примерно в 2002 году. Поскольку менеджеры транзакций (используемые JTA) были дорогими, закрытыми исходными кодами и сложными вещами для настройки в ту эпоху, люди пошли с более дешевыми и легкими для получения локальных вариантов ресурсов.

вы бы использовали транзакцию JTA в основном в любом другом сценарии. Очень простые, небольшие, бесплатные и открытые серверы, такие как TomEE (25 Мб) или GlassFish (35 МБ), имеют поддержку JTA из коробки. Там нет ничего, чтобы настроить, и они просто работают.

наконец, такие технологии, как EJB и Spring, упрощают использование JTA, предлагая declarative transactions. В большинстве случаев рекомендуется использовать их, поскольку они легче, чище и менее подвержены ошибкам. И EJB и Весна могут использовать JTA под крышками.

тип транзакции должен быть установлен в " RESOURCE_LOCAL "для приложения Java SE и в" JTA " для приложения Java EE. "RESOURCE_LOCAL" может работать нормально на некоторых веб-приложений, развернутых на Tomcat, но может вызвать проблемы при запуске приложения в среде glassfish.

Если вы работаете с распределенными транзакциями, вы должны использовать "JTA" в качестве менеджера транзакций.

API транзакций Java (JTA) - это один из API Java Enterprise Edition (Java EE), позволяющий выполнять распределенные транзакции между несколькими ресурсами XA в среде Java.

J2EE приложение включает в себя suppoart fot DT через 2 спецификации
JTA - - - >Java Transaction API.реализация высокого уровня и всегда включена
JTS - - - >служба транзакций Java.