2014-02-24 59 views
1

我有一個對象,我在infinispan存儲。它有幾個字段,可以很容易地複製到另一臺服務器,但只有一些服務器字段。具體來說,這些是對象上的更改偵聽器。問題是當第二個複製實例出現或數據發生變化時,它會對更改監聽器進行跨空序列化,並將其抹除,因爲該字段是暫時的。即:提前如何判斷infinispan在複製時是否僅保留臨時字段?

class A { 
    String data; 
    int value; 
    @InfinispanNoSerialize 
    List<Object> listeners; 
} 

感謝:如果有一種方法,也許與註釋,告訴Infinispan的不復制對象的一個​​領域我所尋求的是。

+0

嗯,不是'瞬態'鍵盤的工作? –

+0

它似乎將集羣中其他機器上的對象中的引用置空。 –

+1

< - 這是正常的。一旦構建了對象,就必須在羣集中的其他計算機上恢復偵聽器。 –

回答

0

我想你想要的是合併新的值與現有的,以保存聽衆的集合。

從理論上講,你應該能夠用@CacheEntryModified偵聽器保存舊的一套聽衆在做這個線程局部時isPre == true叫和保存聽衆寫入新的值時isPre == false調用。

0

這裏的另一種可能性是爲類提供你自己的Externalizer實現,然後你將完全控制寫入可序列化流的內容,以及如何處理從它讀取的內容。這樣,您可以根據需要在接收端重建偵聽器列表。檢查documentation on providing your own Externalizers

相關問題