you are right; sap doesn't support XA. But you can realize "virtual transactions" by your own TransactionManager if you want. Is a lot of work to do that...
What is a "virtual transaction"?
By the way, there are some products like WebMethods and Tibco saying their products perform transactions in SAP and also send their proprietary messages.
If SAP does support only local transactions and, according to the book J2EE Connector Architecture and Enterprise Application Integration by Sharma, Stearns and Ng not all SAP RFC support local transactions (some of them always commit). How can these products perform transaction involving their messages and multiple RFC call?
Ok, they must have implemented some kind of transaction manager of their own, but it still have the SAP restrictions and this whole thing does not seem to work.
It is more or less the same thing on IBM and BEA integration products based on J2EE. Up to what I could understand, they also say you can send JMS messages and perform JCA SAP RFC calls inside a MDB, example. If SAP does not support global transactions, how can they assure all messages and function calls will be performed in a atomic way?
Can anybody throw the light over me on the real functionality of those products?
Are you talking about the last resource gambit?
prepare XA aware
commit single local resource
rollback XA resources
commit XA resources
I've implemented that in jboss4 (see the DR3 download)
It will get backported to jboss-3.2 when I have time to retest it.
Yeah! The last resource optimization would solve the problem as long as you use only RFCs that do not auto commit (not all RFCs can participate in a local transaction with many updates - up to I could research).
Will JBoss be prepared for last resource optimization in the next two months?
I mean, realiable enough to be presented to a customer as a solution for the following problem?
1-MDB triggered by a JMS message
2-MDB performs one or more updates in SAP
3-MDB sends one or more JMS messages
All of that in an atomic operation or all rolledback.