问题描述
有两个不同Javaweb(strut2+ibatis+spring)项目,相互之间调用,如何保证他们数据(事务)的一致行?如Project1(P1)中有method1(m1)方法,Project2(P2)中有method2(m2)方法,如果m1中调用m2,如果m2出现异常,m2回滚,同时m1也回滚;如果调用m2后,m1出现异常,m1回滚,同时m2也回滚到调用前的状态,请问这个改如何实现?
解决方案
解决方案二:
JTA。spring里可以用。网上搜吧。
解决方案三:
看错了。不好意思
解决方案四:
两个系统相互调用,要用到webservice,在被调用系统异常的时候,给个返回值,在调用系统里判断这个值,如果这个值正常就提交,如果异常则回滚。
解决方案五:
引用3楼FAT0708的回复:
两个系统相互调用,要用到webservice,在被调用系统异常的时候,给个返回值,在调用系统里判断这个值,如果这个值正常就提交,如果异常则回滚。
这样是不行的,比如系统A,系统B,调用A,等B的返回值,B返回1(正常),这个时候B已经提交,A得到B的返回值,进行提交,出错了,A回滚,B已经提交了,无法回滚了。具体怎么能实现,要好好想想。
解决方案六:
还是JTA吧。
解决方案七:
最近泡妞泡的头晕了都
解决方案八:
引用4楼yangxiao_jiang的回复:
引用3楼FAT0708的回复:两个系统相互调用,要用到webservice,在被调用系统异常的时候,给个返回值,在调用系统里判断这个值,如果这个值正常就提交,如果异常则回滚。这样是不行的,比如系统A,系统B,调用A,等B的返回值,B返回1(正常),这个时候B已经提交,A得到B的返回值,进行提交,出错了,A回滚,B已经提交了,无法回滚了。
说的很对,无论是用webservice调用,还是RMI调用,都可能出现一个已经提交,而另一个异常,无法回滚。3楼说用JTA,我也看了看,但网上看到的都是同一个web应用里,多个数据源,用JTA可以保证,但并没有看到不同web应用之间相互调用,用JTA可以保证的例子啊,所以不是很清楚,想请高手指点一二啊
解决方案九:
不同web应用之间相互调用,用JTA可以保证的例子---------------------你在2个项目里面都用JTA不就行了。
解决方案十:
JTA是实现不了这种的,理论上来说,应该有一个主,一个次,主的成功,在提交次的,因为是次的,所以提交成功不是十分重要。就是说你的这种要求,应该是无法达到的。
解决方案十一:
引用9楼yangxiao_jiang的回复:
JTA是实现不了这种的,理论上来说,应该有一个主,一个次,主的成功,在提交次的,因为是次的,所以提交成功不是十分重要。就是说你的这种要求,应该是无法达到的。
无法达到?用EJB也不行吗?
解决方案十二:
JPA全局事务吧?