I'm curious about the state-of-the-art or best practices for distributed transactions in Java, particularly with respect to Web services. Any insights, books, or frameworks would be _greatly_ appreciated. I realize this is quite vague but I'm new to distributed transactions. I do understand the philosophy behind, say, 2-phase commit, but I'm not sure if people are doing that and/or what they ...