2009-03-22 14 views
1

私は、エンティティをデータベースに永続化するためのステートレスBeanを保持しています。このステートレスBeanは、メッセージBeanのonMessageメソッドによって呼び出されます。たとえメソッドにREQUIRES_NEWというアノテーションが付けられていても、トランザクションの外部でメソッドを永続化するのは、次のメッセージで呼び出されます。 javax.persistence.TransactionRequiredException:によって引き起こさ注釈付きの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; 
} 

は、次の例外をトリガ何トランザクションが進行

に任意のアイデアではありませんか?私はJTAをかなり新しくしているので、何か重要なことを見逃しているかもしれませんか?

答えて

0

私はそれを解決するために多くの試みをしましたが、約16時間後には動作しているようです。私はそのトリックを正確には分かりませんが、Glassfish 2.1へのアップグレードかもしれません。

最後にもう一度夜眠ることができます!

関連する問題