[q] EJB Transaction
От: Аноним  
Дата: 11.03.08 08:57
Оценка:
Всем привет!

Переделываю бины, в которых транзакции управляются контейнером на управляемые бином.
Есть несколько вопросов:

— если в методе бина с типом транзакции Container метод выбросит исключение, но setRollbackOnly() не был вызван — при каких типах исключений сервер для транзакции сделает откат?

— в методе (methodA) бина с типом транзакции Container вызываются другие методы (methodB) других бинов. Один из таких бинов имеет тип транзакции Bean.
Так как одном из предыдущих методов мог быть вызван setRollbackOnly(), то я в методе methodB перед тем как открыть транзакцию, проверяю ее состояние на Status.STATUS_ACTIVE — если метод вызывает внутри какой-то транзакции, то новой не открываю. А перед комитом проверяю на Status.STATUS_ROLLEDBACK и Status.STATUS_ROLLING_BACK. Нужно ли перед комитом проверять на еще какие-то состояния

Выглядит это как-то так
public void methodB(){
UserTransaction transaction=context.getUserTransaction();
try{
if(transaction.getStatus()!=Status.STATUS_ACTIVE)
   transaction.begin();

//process logic

if(transaction.getStatus()!=Status.STATUS_ROLLEDBACK && transaction.getStatus()!=Status.STATUS_ROLLING_BACK)
   transaction.commit();
else
   throw new Exception("rollback");
}catch(Exception e){
transaction.rollback
}
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.