有两个不同Java web(strut2+ibatis+spring)项目,相互之间调用,如何保证他们数据(事务)的一致行?
如Project1(P1) 中有method1(m1)方法,Project2(P2)中有method2(m2)方法, 如果 m1中调用m2,如果m2出现异常,m2回滚,同时m1也回滚;如果调用m2后,m1出现异常,m1回滚,同时m2也回滚到调用前的状态,请问这个改如何实现?

解决方案 »

  1.   

    JTA。
    spring里可以用。网上搜吧。
      

  2.   

    两个系统相互调用,要用到webservice,在被调用系统异常的时候,给个返回值,在调用系统里判断这个值,如果这个值正常就提交,如果异常则回滚。
      

  3.   

    这样是不行的,比如系统A,系统B,调用A,等B的返回值,B返回1(正常),这个时候B已经提交,A得到B的返回值,进行提交,出错了,A回滚,B已经提交了,无法回滚了。
    具体怎么能实现,要好好想想。
      

  4.   

    说的很对,无论是用webservice调用,还是RMI调用,都可能出现一个已经提交,而另一个异常,无法回滚。
    3楼说用JTA,我也看了看,但网上看到的都是同一个web应用里,多个数据源,用JTA可以保证,但并没有看到不同web应用之间相互调用,用JTA可以保证的例子啊,所以不是很清楚,想请高手指点一二啊
      

  5.   

    不同web应用之间相互调用,用JTA可以保证的例子
    ---------------------
    你在2个项目里面都用JTA不就行了。
      

  6.   

    JTA是实现不了这种的,理论上来说,应该有一个主,一个次,主的成功,在提交次的,因为是次的,所以提交成功不是十分重要。就是说你的这种要求,应该是无法达到的。
      

  7.   

    无法达到?
    用EJB也不行吗?