EJB Bean与不同的未完成事务相关联

时间:2014-02-04 10:26:04

标签: java transactions ejb stateless-session-bean stateful-session-bean

请看这个片段:

@Stateless 
public class A {
   @EJB
   B b; // B is stateful EJB

   b.init(); // initialize Sets and List that are used in doSthInB(C c)
   public void doSthInA(){
        for(C c){
           b.doSthInB(c); // doSthInB use REQUIRES_NEW transaction type
        }
   }
}

我的目的是处理类型为C的对象集合。方法doSthInB修改实体,结果应该在方法调用结束时保留(这就是我用户REQUIRES_NEW的原因)。 在处理输入集合中的某个元素时,会发生一些错误,然后只应该保留此操作,应该记录它,并且不应该停止处理其他元素。

我在处理过程中获得的是:javax.ejb.EJBException: java.lang.IllegalStateException: Bean is associated with a different unfinished transaction

也许我的想法是错的。有什么提示吗?

1 个答案:

答案 0 :(得分:2)

我看到你在无状态bean中注入了一个Stateful。 尽管在大多数情况下规范允许这是一个错误。

我不知道你是否完全清楚这是什么 设计决策暗示。如果不是尽量避免使用这种方法。 我认为这可能是你例外的原因。