我們在整個應用程序中利用內存中的LRU緩存來處理幾種不同的模型。爲了避免事務被回滾(比如陳舊的條目)引起的問題,添加了事務性緩存的概念:爲每個事務創建一個臨時緩存,然後如果條目被回滾或被複制到主如果提交該模型緩存。什麼時候應該調用Transaction.delistResource()?
要做到這一點,高速緩存實現XAResource
並覆蓋commit()
和rollback()
方法。每當新的Transaction
想要訪問一些不在主緩存中的數據時,就會創建事務緩存並將其傳遞到enlistResource()
。
的問題是,我試圖在commit()
和rollback()
方法,這是拋出IllegalStateException
中調用delistResource()
的緩存實例,稱該交易已經被標記爲回滾(或提交)。所以我想知道......是不是而不是將緩存作爲資源去除(換句話說,它已經作爲回滾或提交過程的一部分被除牌),還是流程中還有另一點叫做?