Red Hat Bugzilla – Bug 995490
Clarify difference between JTA (API) and JTA transactions and JTS transactions
Last modified: 2014-11-23 18:16:59 EST
Title: About Java Transactions API (JTA)
There could be an misunderstanding in terms of JTA API and JTA/JTS transactions. This terms should be clarified.
It would be fine to describe that JTA means java transaction api defined in JSR. And that the narayana uses term JTA expression for local (not distributed) transactions. And JTS transactions for distributed ones.
In fact JTS is as well specification based on OTS (Object Transaction Service).
The JTA api is uniform (not dependent whether JTS or JTA transactions are used). JTA/JTS transaction is just implementation/background. It defines how Narayana will be working under cover (using local memory or iiop message for communication etc.).
There is fine summary I think:
thanks you for changes but as this is a bit older issue several things changed and the text is quite poor to be read. Let me put here brand new suggestion for text in 11.2.5. and 11.2.6. (numbers from Revision 6.3.0-29)
11.2.5. About Java Transactions API (JTA)
Java Transactions API (JTA) is part of Java Enterprise Edition specification. It is defined in JSR-907.
Implementation of JTA is brought by transaction manager which is covered by project Narayana in case of EAP application server. Transaction manager then allows application to assign different resources under one single global transaction. Those resources could be e.g. databases or jms brokers. We call the global transaction XA transaction. Unfortunately there is a limitation that only resources which cover XA capabilities could be fully part of such transaction.
Be aware that there could be a misunderstanding of term JTA in this document. JTA means java transaction API but it's used as a term how the transaction manager processes transaction under the cover. Transaction manager could work in mode of jta transactions where data is shared via memory and transaction context is transferred along by remote ejb calls and jts mode where data is shared by sending corba messages and transaction context if transferred along by iiop calls. Both modes support distribution of transaction over more EAP servers.
Annotations are one method for creating and controlling transactions within your code.
See more at:
11.2.7. About XA Datasources and XA Transactions
11.2.11. About Distributed Transactions
11.8.2. Configure the ORB for JTS Transactions
11.2.6. About Java Transaction Service (JTS)
Java Transaction service is a mapping of the OTS to Java. Java application rather used the JTA API to manage transaction. JTA then could interact with a JTS transaction implementation (as mentioned above when transaction manager is switched to jts mode). If you want to use special JTS capabilities, as for example nested transaction, then you will need manually work with JTS api.
JTS works over IIOP protocol. Transaction managers that usese JTS could communicate with each other using a process called an Object Request Broker (ORB), using a communication standard called Common Object Request Broker Architecture (CORBA).
Using JTA API then from an application standpoint, a JTS transaction behaves in the same ways as a JTA transaction.
The implementation of JTS included in JBoss EAP 6 supports distributed JTS transactions across multiple JBoss EAP 6 servers. The difference between distributed JTS transactions and fully-compliant JTS transactions is interoperability with external third-party ORBs. This feature is unsupported with JBoss EAP 6.
11.2.3, “About the Transaction Coordinator or Transaction Manager”
Verified Revision 6.3.0-31