2011-08-18 2 views
3

우리는 JPA (Hibernate) 기반 어플리케이션에서 2 차 캐시로 Infinispan (JGroups를 사용하여 클러스터 됨)을 사용하고 있습니다. 데이터베이스 작업이 실패하면 레벨 2 캐시가 오래되었음을 알 수 있습니다. 예 :SQL 예외로 인해 Hibernate 2 차 레벨 캐시가 Infinispan을 제공자로 사용하여 오래된 데이터를 갖게합니다.

1) 로그인 "joe"로 사용자를 만들려고합니다. 2) 통화 지속 (사용자); 3) 데이터베이스 고유성 제약으로 인해 지속성이 실패합니다. 4) login = joe에서 id로 찾기를 수행하십시오 (로그인은 PK라고 가정). 5) Hibernate는 데이터베이스에없는 경우에도 Infinisan 캐시에서 joe 사용자를 반환합니다.

XA 트랜잭션을 구성하고 Infinispan을 XA에 참여 시키면이 상황에서 과도한 것처럼 보입니다. 이 문제를 해결하는 유일한 방법은 XA입니까?

+0

이 루프를 닫으려면 Atomikos를 사용하는 XA를 사용하여 캐시를 동기화 상태로 유지해야했습니다. Manik의 솔루션이 작동하지 않았습니다. –

답변

0

캐시를 동기화 상태로 유지하기 위해 Atomikos를 배치하여 XA 트랜잭션을 활성화해야했습니다. 다른 솔루션이 작동하지 않았습니다.

관련 문제