我剛開始使用Oracle的Coherence緩存,我注意到了這一點:如果我在緩存中放入一個ConcurrentHashMap對象,當我檢索它時,我可以看到它被轉換爲普通的HashMap。一致性緩存| ConcurrentHashMap in,HashMap out
我能做些什麼來避免這種內部轉換?
我剛開始使用Oracle的Coherence緩存,我注意到了這一點:如果我在緩存中放入一個ConcurrentHashMap對象,當我檢索它時,我可以看到它被轉換爲普通的HashMap。一致性緩存| ConcurrentHashMap in,HashMap out
我能做些什麼來避免這種內部轉換?
我想通了。我刪除了配置xml中的<串行器>條目。現在它工作正常。但是,我認爲跨平臺支持可能會受到影響(例如.net)。
Java的ConcurrentHashMap(或其他集合類型)的等價物在另一個平臺中可能不存在,因此Coherence緩存只是在映射中保留鍵值對的列表。這就是爲什麼你得到一個HashMap的原因。
更好的方法是根據ConcurrentHashMap(在Java版本中)和您自己的序列化程序創建您自己的地圖類。使用PofWriter.writeMap和PofReader.readMap方法,您可以安排返回一個ConcurrentHashMap。如果你需要.Net版本,你可以讓你的地圖類在.NET中使用最好的地圖,並提供一個合適的自定義序列化器。