业务场景:
客户下发订单后,订单到竣工需要走三个岗位1,2,3包括两个迁移过程:
1-》2的迁移 实现方式为无状态EJB,容器控制事务
2-》3的迁移 实现方式为无状态EJB,容器控制事务
备注:2-》3的迁移中还调用其它系统的EJB和RMI服务,webservice服务。相对复杂。
现在将1-》2 的状态迁移和2-3的迁移放置在一起给外围系统提供接口(EJB实现),同时需要控制1-》2,2->3迁移过程中的事务,当2-》3失败的时候,不影响1->2的事务提交。
解决思路:
1. 使用无状态EJB再次进行封装后,如果使用容器控制失误,则1-》2和2-》3的事务无法分离控制。舍弃
2. 将1-》2和2->3分别提供给外围系统,然后由调用方自己控制。 此方案尽量避免,给外围系统的接口尽量简单符合业务场景。(最坏的方案)
3. 使用JTA进行事务控制。
使用JTA控制事务的步骤:
1. 获取javax.transaction.UserTransaction userTransaction = sessionContext
.getUserTransaction();
2. 执行第一次状态迁移
userTransaction.begin();
1-》2
userTransaction.commit();
3. 执行第二次状态迁移
userTransaction.begin();
2-》3
userTransaction.commit();
4. 配置文件设置
将EJB的事务控制类型设置为Bean
<transaction-type>Bean</transaction-type>
这样就实现了对容器控制事物EJB 的分离事务控制。
分享到:
相关推荐
JTA(Java Transaction API) 为 J2EE 平台提供了分布式事务服务。 要用 JTA 进行事务界定,应用程序要调用 javax.transaction.UserTransaction 接口中的方法。
在Spring中使用JTA事务管理 1 通过集成JOTM,直接在Spring中使用JTA事务 1.1. 将JOTM以下类库添加到类路径中 1.2. 编写JOTM配置文件,放到类路径下 1.3. 在MySQL上建立两个数据库 1.4. 在Spring配置文件中配置JOTM ...
Spring+iBatis+JOTM实现JTA事务: 如何处理跨库事物:spring + jtom 的jta事务是个很好的选择. 这个源码示例非常不错,包括所有的源码和jar包,下载后eclipse 或 myeclipse 导入就能用。 里面有详细的说明和注释,...
JTA分布式事务处理多数据事务问题的示例代码。
在tomcat 中配置JTA 事务,方便管理web项目
1.利用mina框架重构api,脱离了web应用服务器resin,而原api的jta事务由resin支持,故需要用其他支持jta事务的工具重新配置。在支持jta事务的工具中选择了atomikos 2.Api的数据库连接配置参数没有类似:testQuery的...
JTA配置文件请看applicationContext-jta.xml 博文链接:https://liran-email.iteye.com/blog/227990
有关JDBC事务 JTA事务 传播特性 隔离级别等等
Spring+iBatis+JOTM实现JTA事务
例子虽小,可覆盖面广,设计spring载入.properties文件,spring配置jta和jotm分布式事务,设置数据源连接池,注解事务驱动。功能是在mysql上建立了两个数据库分别为dbone和dbtwo,在dbone里有表tb1,表中只有一个字段...
Spring Boot+Druid+Mybatis实现JTA分布式事务
spring + JTA + JOTM实现分布式事务, 高大上的技术
NULL 博文链接:https://ajita.iteye.com/blog/2023951
博客上有很多类似的,很多都有点小错误。还是自己搭建测试的好用。resource中有sql,自己创建两个数据库导入sql,即可运行test测试
spring+jms+jta事务的消息发送和消息消费。 完整可正常运行例子,对JTA分布式事务的配置。 本例可以直接作为处理消息的项目,在此之上直接继续开发。
JDBC事务和JTA(XA)事务
atomikos实现多数据源支持分布式事务管理(spring、tomcat、JTA) 结合spring 和durid进行配置,
代码下载下来,想要了解更多相关内容可以看http://www.cnblogs.com/shamo89/p/7307961.html
myeclipse开发,导入即可用,可以参阅http://www.cnblogs.com/shamo89/p/7326718.html