JTA入门 2013-07-08 22:30:27
分类: Java 1.概述 Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐,脱离Java EE应用服务器使用声明式事务的道路已经畅通无阻。但是很大部分人都还认为脱离Java EE应用服务器就无法使用JTA事务,这是一个误解。其实,通过配合使用ObjectWeb的JOTM开源项目,不需要Java EE应用服务器,Spring也可以提供JTA事务。 正因为AOP让Spring拥有了脱离EJB容器的声明式事务能力,而JOTM让我们在脱离Java EE应用服务器下拥有JTA事务能力。所以,人们将AOP和JOTM称为Java软件开发的两个圣杯。 JTA事务的使用方法有:Spring中直接集成JOTM提供JTA事务管理、将JOTM集成到Tomcat中,Spring通过引用Tomcat JNDI数据源提供JTA事务管理、引用其它功能完善JavaEE应用服务器所提供的JTA事务管理。 JTA的实现框架有: GeronimoTM/Jencks 官方文档比较少,不适合学习和维护。 SimpleJTA 没有实现JTS (Java Transaction Service)而且不是活跃的。 Atomikos 是一个另人钦佩的产品。有丰富的文档,而且有很好的支持。 JBossTS 是一个应用在JBOSS服务器上的,肯定是一个成熟的产品,也有好的支持,详细信息可以看这里:http://www./news /thread.tss?thread_id=37941 最常见的二个如下: JOTM JOTM(Java Open Transaction Manager)是ObjectWeb的一个开源JTA实现,它本身也是开源应用程序服务器JOnAS(Java Open Application Server)的一部分,为其提供JTA分布式事务的功能。 存在的问题:使用中不能自动rollback,无论什么情况都commit。 Atomikos 大家推荐最多的。和JOTM相比Atomikos Transactions Essentials更加稳定,它原来是商业项目,现在开源了。象mysql一样卖服务支持的。而且论坛页比较活跃,有问题很快可以解决。 演示代码 spring+atomikos+JTA完整例子,适合初学者 http://www./pdw2009/archive/2013/03/22/202725.html spring 3.0.5 + jotm+spring mvc http://fenglingcorp./blog/957952 spring+mybatis+Atomikos+SqlSessionDaoSupport,适合用于项目开发 http://blog.csdn.net/taxuexunmei414923794/article/details/7673246 spring3+ATOMIKOS3.7+hibernate3.2,代码中没有任何事务,值得参考 http://www./j2ee/spring/jta-spring-atomikos/ 参考文献 1. JTA事务管理(一).http://mavin.zhou.blog.163.com/blog/static/114522435200971822334475/ |
|