![分布式事务_第1张图片](http1://img.it610.com/image/product/7d2a3bade1d642d7854af26a69fff8d3.jpg)
一. 链接地址:
事务服务简述:
http://www.ibm.com/developerworks/cn/java/l-transation/part1/
J2EE中的事务服务简介:
http://www.ibm.com/developerworks/cn/java/l-transation/part2/#author1
分布式事务JTA原理与实现:
http://www.ibm.com/developerworks/cn/java/j-lo-jta/
Java Transaction API概述:
http://www.bccn.net/Article/kfyy/java/jszl/200709/6154.html
二。附件:
(1)XA API文档
(2)jta-3-9 测试代码,执行maven,自动引包。以EMBED数据为例,做了测试。包括JMS,多数据源下的测试。
三。注意事项
UserTransaction utx = new UserTransactionImp(); utx.setTransactionTimeout(60); // First, create a transaction utx.begin(); UserTransaction utx1 = new UserTransactionImp(); utx1.setTransactionTimeout(60); utx1.begin(); try{ getBalance(resourceName,false); getBalance("db2",false); }catch(Exception e){ }finally{ utx.commit(); }
(1)作用域
分析上面的代码,控制多个事务的UserTransaction和其控制的各个事务,在代码层面上并没有关联,即并没有把事务注册到UserTransaction中的代码。这是因为执行utx.begin();
这行时,会起动一线程,这个线程会监控制进程中所有的XA资源,是通过后台线程控制的。
由此要考虑作用范围,避免处理多个用户的分布事务相互间有影响。
(2)性能问题
如不是业务的特殊要求,尽量不要使用分布事务。
四。查阅资料基本上市面流行的数据库都支持XA标准。
其中SQLserver的XA 驱动见下: ftp://ftp.software.ibm.com/software/websphere/info/tools/DataDirect/datadirect.htmEMBED,MYSQL,Oracle这些也都支持,而且驱动类都要有开源。