你要知道事务是从什么时候开始的。
1 假设调用者并没有启动事务,则Container根据sectionService的"required",启动一个事务t,sectionService调用EntityBean的时候会将t传给EntityBean(通常EntityBean也为Required)。
在这种情况下,事务从调用sectionService方法起始,要等sectionService方法退出后才会回滚。
2 假设调用者已经启动事务x了,则Container根据sectionService的"required",将x传给sectionService,当然也会传给EntityBean。
在这种情况下,事务从调用者方法起始,即使sectionService方法退出,也不能回滚,要返回到启动事务的那个点,才回滚。
===============
另外,XA是不需要的,如果你只有一个数据源的话。如果你有多个数据库参与一个事务,则每个数据库都要支持XA。