J2EE is not required to support 2-phase commit across distributed databases. J2EE is required to support JDBC2.0 extensions (which inherently supports 2-phase commit).
Are these 2 statements in conflict? If J2EE is required to support JDBC2.0 extensions, and these support 2phase commit, surely J2EE inherently is required to support 2PC across multiple databases?
What am I missing?
I don't think these two statements are in conflict. The specs (I'm reading 2.0pfd2) says the container should provide "JDBC 2.0 Standard Extension (support for row sets only)," so it needs to only support row sets, not XADataSources. You might want to double check with the guys who actually provide the container, try the ejb interest list, people from BEA, Borland, Sysbase, etc. are regularly there.