This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Normally the transactions in JCA are managed by the Application Server. App server implements the Transaction contracts between itself and the back end system. I believe application servers such as JBOSS or WAS implement JCA even for setting up connections to RDBMS like Oracle. In this case, it's usually set up as a LOCAL TRANSACTION without the need for an external transactional coordinator.
However if you use JCA to talk to multiple data sources (say, Oracle and LEGACY System), it needs to be set up as XA transaction with the need for an external transaction coordinator that can do a Two phase commit.
Developers would be providing configuration information alone (Local or XA, login credentials and other metadata) while the Application server usually implements the Transaction contracts required by the Application.
SCJP 5.0 , SCEA Java EE 5, TOGAF Certified
Joined: Oct 06, 2008
Thanks Sunderam for this info.
So this is my understanding-
Some JCA adapters doesn't support transactions.
If JCA adapter is communicating with single system and managing transaction, then it is set up as LOCAL TRANSACTION.
If JCA adapter is communicating with multiple systems and managing transaction, then it is set up as XATransaction.
Please correct me if I am wrong.
Joined: Oct 10, 2011
As for this "Some JCA adapters doesn't support transactions", I'm inclined to think that, at least in 2012, is that most JCA adapters DO support transactions. Few may not, as you say, yes.