Я боб @RequestScoped, @Transactional CDI впрыскивается в моем REST интерфейс:транзакционных CDI боб: Как заставить транзакции Откат
@RequestScoped
@Transactional
public class myRestCall
{
@Inject
EntityHandlerService ehs; // contains @PersistenceContext
try
{
// execute business logic, access DB via ehs (JPA/Hibernate)
}
catch(Throwable t)
{
// log exception
// -> rollback transaction
}
}
Теперь я хотел бы попробовать/поймать вокруг вызова бизнеса логику, что я могу правильно регистрировать исключение. Но мне нужно отменить транзакцию вручную, если я не сделаю исключение еще раз тем, что мне не нравится. Итак, как я могу принудительно отключить откат? Я знаю, как это сделать, если это было бы EJB: Мы могли бы сделать
@Resource
private SessionContext ctx;
, а затем
ctx.setRollbackOnly();
в catch
близко.
Однако не является EJB, и я не могу сделать EJB из-за ограничений ресурсов.
Согласно документации: http://docs.oracle.com/javaee/7/api/javax/transaction/Transactional. html - это фактически 'rollbackOn'. – Gimby
Спасибо #Gimby за исправление – Wakachopo
@Wakachopo: Что вы имеете в виду * Но если вы сделаете так, вы должны ** выйти ** блок «try-catch» *? – badera