MessageDriven Bean:仍然需要Java EE 6中的MessageDrivenContext #setRollbackOnly()吗?

时间:2012-11-09 11:04:35

标签: java-ee-6 ejb-3.1 message-driven-bean

我有一个消息驱动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时,容器是否不会自动回滚事务?如果我省略这样的方法调用怎么办?

谢谢!

1 个答案:

答案 0 :(得分:1)

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