0

我有一个消息驱动 Bean (EJB 2.1),它执行以下操作:

public void onMessage(javax.jms.Message msg) {
try{
...
} catch (JMSException e) {
        e.printStackTrace();
       getMessageDrivenContext().setRollbackOnly();
}

我想将这样的 bean 转换为 EJB 3.1,我想知道是否仍然需要 setRollbackOnly() 显式调用(以及因此在 bean 中注入 MessageDrivenContext 资源)?换句话说,抛出JMSException时容器不会自动回滚事务吗?如果我省略这样的方法调用会发生什么?

谢谢!

4

1 回答 1

1

它仍然是必需的。JMSException 不是一个特例。它不会导致事务回滚。如果您省略setRollbackOnly并且没有其他代码部分导致回滚,则事务最终被提交。

于 2012-11-09T20:06:01.967 回答