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

标签 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与不同的未完成事务关联

也许我的想法是错误的。有什么建议吗?

最佳答案

我看到您正在无状态 bean 中注入(inject)有状态 bean。 尽管事实上在大多数情况下规范允许这样做,但这是一个错误。

不知道你是否完全清楚这是什么意思 设计决策意味着。如果不是,请尽量避免使用这种方法。 我认为这可能是您异常的原因。

关于java - EJB Bean 与不同的未完成事务关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21549778/

相关文章:

java - Apache Shiro,数据库的权限控制

java - android无法从 Intent 中获取字节数组

java - 将 spring 事务传播到兄弟调用

java - Apache Jena 不添加 hasPart 关系

javax.ejb.TransactionRolledbackLocalException(Glassfish 3 + JPA + EclipseLink)

java - 设置一个 DTO 对象,它有一个数组作为实例变量

java - Java 中不可修改的 NavigableSet/NavigableMap?

java - 在SWT按钮上,如何将文本放置在图像前面

Hibernate:如何禁用脏对象的自动保存?

java - EntityManager.persist() 不保存到数据库