REQUIRES_NEW带注释的方法是在没有事务的情况下执行的吗?

时间:2009-03-22 23:46:12

标签: jpa ejb-3.0 jta jboss-mdb

我有一个无状态bean resposible用于将实体持久化到数据库。这个无状态bean由消息bean的onMessage方法调用。有线的事情是,在第一条消息上一切正常,但在下一条消息中,负责持久化的方法在事务外调用,即使该方法使用REQUIRES_NEW注释。

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public StateChange persistChange(long deviceId, ...) {


    ...

    StateChange change = new StateChange(...);
    em.persist(change);
    em.refresh(change); // To provoke the error

    return change;
}

调用refresh会触发以下异常:

  

引起:javax.persistence.TransactionRequiredException:没有正在进行的事务

有什么想法吗?我对JTA很新,所以我可能错过了一些重要的东西?

1 个答案:

答案 0 :(得分:0)

我尝试了很多来解决它,大约16个小时左右后,它似乎正在起作用。我不确定究竟是什么技巧,但它可能是对Glassfish 2.1的升级。

终于能够再次入睡!