我在EJB3无状态会话bean中使用CMT。此外,我还创建了自己的异常,其注释为"@ApplicationException (rollback=true)“。
提前谢谢。;)
发布于 2010-03-02 11:56:17
首先,没有回滚异常,它是事务的回滚。
@ApplicationException(rollback=true)抛出异常,则不必手动回滚事务。Context.setRollbackOnly()强制容器回滚事务,如果没有例外情况也是如此。@ApplicationException(rollback=true)。如果异常为RuntimeException,且未捕获异常,则将强制容器回滚事务。但是要小心,容器在本例中将丢弃EJB实例。RuntimeException,事务将自动回滚。如果在代码中捕获检查过的异常,则必须使用setRollbackOnly回滚事务。欲了解更多信息,请访问免费书籍掌握EJB。它很好地描述了回滚场景,对于下载来说是免费的。
发布于 2013-05-15 13:18:14
关于如何防止以注释方式声明的检查异常导致抛出回滚传播到“上层”的问题,这里还没有回答。
我认为这将需要围绕所讨论的EJB设置一个包装器,从而吞噬抛出的异常。(换句话说:我认为必须针对方法边界抛出自定义异常(因此不能在方法中捕获和处理),并传播以获取事务效果--而且还会导致EJB实例的破坏。
https://stackoverflow.com/questions/2360764
复制相似问题