1

我有一个无状态 bean 负责将实体持久化到数据库中。这个无状态 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 还很陌生,所以我可能错过了一些重要的事情?

4

1 回答 1

0

我尝试了很多来解决它,大约 16 个小时后它似乎正在工作。我不确定到底是什么伎俩,但它可能是升级到 Glassfish 2.1。

终于又可以晚上睡觉了!

于 2009-03-23T20:56:20.073 回答