JavaEE事务管理器在操作上可以分为容器管理事务和Bean管理事务。
容器管理事务是一种声明式的事务管理,开发者可以对bean中的方法设置事务属性和类型,由容器负责处理事务的开始和提交;Bean管理事务完全由开发者控制,在具体的操作上可以实现为JDBC事务控制和JTA事务控制,JDBC事务控制不支持分布式事务操作,事务的开始和结束完全由开发者操作。在处理分布式事务的时候要注意以下几点:
1)容器管理事务和Bean管理事务都支持分布式事务(分布式事务是在一个事务中操作多个数据库,事务依然遵循CAID),但是容器管理事务只支持在一个方法中开启一个事务或没有事务,如果要在一个方法中运行多个事务,则需要使用global transaction(JTA)。
2)如果底层数据库采用多个Vendor的数据库,则需要使用JTA。
3)处理或配置分布式事务时,在JavaEE事务管理器中要使用XADatasource。