jta交易

时间:2010-11-24 12:09:27

标签: java jpa jta

我有一个jta交易代码如下:

try{
  //start jta user transcation utx


//commit utx

}catch(Exception ex){
   try{
     //rollback utx
   }catch(Exception){
    //print error "cannot rollback
   }
}
finally{
  if(null != utx && utx.getStatus() == Status.STATUS_ACTIVE){
                    utx.commit();
  }
}

我不明白为什么utx最终会提交?

2 个答案:

答案 0 :(得分:4)

仅当事务状态为finally时才调用STATUS_ACTIVE块中的提交,这意味着它既未提交也未回滚。它看起来像一个安全性,以确保在方法结束时回滚或提交事务,以防方法try块中忘记utx.commit()

答案 1 :(得分:1)

我想说在finally块中进行这样的提交并不是一个好习惯。承担中途工作的风险对大多数目的来说都是危险的。在将事务状态检查为ACTIVE后,回滚将是更好的选择。

HTH。

谢谢, 尼丁