2009-03-22 6 views
1

데이터베이스에 엔티티를 지속시키기 위해 스테이트리스 빈을 배치 할 수 있습니다. 이 상태없는 빈은 메시지 빈의 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 로의 업그레이드가 될 수 있습니다.

마침내 밤에 다시 잠을 잘 수 있습니다!

관련 문제