首先,没有回滚异常,它是事务的回滚。
- 如果您使用抛出异常
@ApplicationException(rollback=true)
,则不必手动回滚事务。Context.setRollbackonly()
强制容器回滚事务(如果没有例外)。 - 受检查的异常本身不会回滚事务。它需要具有注释
@ApplicationException(rollback=true)
。如果该异常是aRuntimeException
并且未捕获到该异常,则它将强制容器回滚该事务。但是请注意,在这种情况下,容器将丢弃EJB实例。 - 如2.)中所述,如果抛出
RuntimeException
,交易将自动回滚。如果您在代码内捕获到检查异常,则必须使用setRollbackOnly
该事务回滚。
有关更多信息,请查阅免费书籍Mastering EJB。它很好地描述了回滚方案,可以免费下载。



