我有一个消息驱动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时,容器是否不会自动回滚事务?如果我省略这样的方法调用怎么办?
谢谢!
答案 0 :(得分:1)
仍然需要它。 JMSException不是特例。它不会导致事务回滚。如果省略setRollbackOnly
并且没有其他代码部分导致回滚,则最终会提交事务。