I'm not doing much (ok any) 2PC (two-phased commit) these days. I used to be pretty hip on XA in the Java world. I still run into people that yell at me about XA. Perhaps I wear size 16 burgundies (clown reference for the un-indoctrinated).
XA is great in theory and fun to drop in meetings (not quite as fun as 2PC), but:
- Slow (sync to disc)
- Expensive (resources)
- Implementations often buggy
- Not always easy to find XA impls (try VSE mainframe)
- JMS transaction + JDBC
- Compensating transaction if necessary