우리는 우리의 응용 프로그램에서 여러 다른 모델을 위해 메모리 내 LRU 캐시를 사용합니다. 부실 항목과 같이 롤백되는 트랜잭션에서 발생하는 문제를 피하기 위해 트랜잭션 캐시 개념이 추가되었습니다. 각 트랜잭션에 대해 임시 캐시가 만들어지고 항목이 롤백되거나 주 항목으로 복사되는 경우 삭제됩니다 해당 모델이 커밋되면 캐시합니다.Transaction.delistResource()를 언제 호출해야합니까?
캐시를 구현하려면 XAResource
을 구현하고 commit()
및 rollback()
메서드를 무시합니다. 새로운 Transaction
이 메인 캐시에없는 일부 데이터에 액세스하려고 할 때마다 트랜잭션 캐시가 생성되어 enlistResource()
으로 전달됩니다.
문제는 내가 트랜잭션이 이미 롤백 표시된 말, IllegalStateException
을 던지는 된 commit()
및 rollback()
방법, 내 캐시 인스턴스에 delistResource()
를 호출하려고 (또는 위탁) 한 것입니다. 그래서 궁금 해서요 ... 이 아니라면은 자원으로 캐시를 제거합니다 (다시 말하면 롤백 또는 커밋 프로세스의 일부로 이미 삭제됩니다). 그렇지 않으면 흐름의 다른 지점이 있어야합니다. 불리다?