2014-09-24 33 views
0

我在我的代码中使用Java EE容器管理事务。我正在使用注释@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)作为我的一种方法。该方法应该更新数据库对象中的值。但是这种方法有时会失败,并且事务被容器回滚。如何查找回滚Java EE容器管理事务

有什么方法可以快速查找容器是否回滚事务吗?我知道我们可以在数据库中再次查询来真正检查并理解值是否已更改,但我不想再次查询。我想知道如果我能理解该交易是否已经回滚,我可以通知客户FAILURE消息。

有关此主题的任何建议,非常感谢。

回答

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 
    } 
    } 
}