JTA Transcations - PullRequest
       5

JTA Transcations

3 голосов
/ 24 ноября 2010

У меня есть код для jta transkations следующим образом:

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 ]

4 голосов
/ 24 ноября 2010

Фиксация в блоке finally вызывается только в том случае, если статус транзакции STATUS_ACTIVE, то есть он не был ни зафиксирован, ни откатан. похоже, что безопасность гарантирует, что транзакция будет либо откатана, либо зафиксирована в конце метода, в случае, если utx.commit() было забыто в блоке метода try.

1 голос
/ 28 июля 2011

Я бы сказал, что не стоит делать такой коммит в блоке finally. Существует риск совершения промежуточной работы, которая была бы опасна для большинства целей. Откат будет более подходящим вариантом после проверки состояния транзакции как АКТИВНОГО.

НТН.

Спасибо, Нитин

...