Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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