循环调用内部方法的事务回滚

Transaction rollback with loop calling inner method

您好,我对一个 bean 中的事务回滚有疑问。我试图让流程忽略不良记录并继续休息。如示例所示。如果 db.update 将抛出未经检查的异常,它将回滚所有更改?

@Stateless
public class klass{
 @Transational(NEVER)
 public methodA(){
 list = db.getList();
 for(i : list){
  methodB(i);
 }

 @Transactional(REQUIRE_NEW)
 public methodB(arg){
  try{
  db.update(arg, CLOSE);
  }catch(Exception){}
 }
}

需要从另一个bean 调用它。 https://www.adam-bien.com/roller/abien/entry/how_to_self_invoke_ejb

激活新交易有两种选择:

  1. SessionContext.getBusinessObject(local_interface).method_call
  2. 从另一个 bean 调用 bean。

之所以需要这样做是因为容器需要拦截您的调用。而且它只能在您使用注入或查找实例时执行此操作。