2012-03-04 2 views

ответ

110

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 под крышками.

+3

+1 для объяснения истории и развития использования JTA (EJB, Spring и т. Д.). – Marco

1

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

-1

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

1

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

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