我有以下示例:
public class MyEJBService implements javax.ejb.SessionBean {
public void modifyAllItems() {
doSomething...
for(...)
{
modifyItem(item);
}
}
public void modifyItem(Item item) {
doSomething...
}
}
方法 1 = modifyAllItems 方法 2 = modifyItem
Method1 多次调用 method2。我想在method1禁用事务,但在method2启用事务。method2 的每次调用都应该在不同的事务中(如果在修改项目时发生错误,则可能已修改某些项目而其他项目保持不变)。我已经为 method1() 定义了一个 EJB 事务类型——从不,另一个为 method2()——需要新的。问题是,当我调用 method2() 时,EJB 似乎没有创建任何事务,因为当 method2() 内部发生错误时它不会回滚(如果在 method2 内部的数据库中发生了某些更改但它抛出在方法 2 完成之前出现异常,数据库没有返回到以前的状态 - 回滚)。这种行为是预期的吗?我有点困惑。非常感谢。