【发布时间】:2011-09-13 06:49:33
【问题描述】:
如果我调用其中一个 EJB 的 this.sessionContext.setRollbackOnly() ,让 MDB 在事务中接收消息,然后执行多个 EJB 调用,这会触发 JMS 消息的重新传递吗?
所有 EJB 方法都标有 Requires_New 事务属性。
【问题讨论】:
标签: session rollback message-driven-bean
如果我调用其中一个 EJB 的 this.sessionContext.setRollbackOnly() ,让 MDB 在事务中接收消息,然后执行多个 EJB 调用,这会触发 JMS 消息的重新传递吗?
所有 EJB 方法都标有 Requires_New 事务属性。
【问题讨论】:
标签: session rollback message-driven-bean
不,因为 MDB 的事务将在处理带有 @REQUIRES_NEW 注释的 EJB 时被挂起——每个都在自己的事务中。额外的假设是 setRollbackOnly() 是回滚 EJB 事务的唯一效果,即 EJB 正确退出并且没有抛出任何异常(在投票支持回滚后,与资源的进一步交互可能会导致来自 javax.ejb.EJBException 的异常家人被扔)。
【讨论】: