我在我的代码中使用Java EE容器管理事务。我正在使用注释@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
作为我的一种方法。该方法应该更新数据库对象中的值。但是这种方法有时会失败,并且容器会回滚事务。
有没有办法快速找到容器是否回滚了交易?我知道我们可以在数据库中再次查询以真正检查和理解值是否已更改,但我不想再次查询。我想知道我是否能理解该交易是否已经回滚,我可以通过FAILURE消息通知客户。
对此主题的任何建议都非常感谢。
答案 0 :(得分:0)
总是回滚事务的一件事是异常(假设它不是'@ApplicationException(rollback = false)'。在客户端,你可以捕获这个异常,并且你将得到保证(按照规范)该事务被回滚。
@Remote //or @Local
public interface MyBeanInterface {
void doSomeTransaction();
}
public class MyController {
@EJB
private MyBeanInterface bean;
public void doSomething() {
try {
bean.doSomeTransaction();
}catch(EJBException ex){
//the exception is always wrapped in an EJBException, unless it is an @ApplicationException
//do something with the exception
}
}
}