2010-07-16 7 views
1

Je viens de commencer à travailler avec le cache Coherence d'Oracle et j'ai remarqué ceci: Si je mets un objet ConcurrentHashMap dans le cache, quand je le récupère, je vois qu'il est converti en HashMap normal.Coherence cache | ConcurrentHashMap in, HashMap out

Tout ce que je peux faire pour éviter cette conversion interne?

Répondre

0

Je l'ai compris. J'ai supprimé les entrées <serializer> du fichier xml de configuration. Maintenant ça fonctionne bien. Mais, je pense que le soutien multi-plateforme peut souffrir (par exemple .net).

1

Un équivalent pour ConcurrentHashMap de Java (ou d'ailleurs d'autres types de collection) peut ne pas exister dans une autre plate-forme, de sorte que le cache Coherence persiste juste la liste des paires valeur/clé dans la carte. C'est pourquoi vous récupérez un HashMap.

Une meilleure façon est de créer votre propre classe de carte basée sur ConcurrentHashMap (dans la version Java) et votre propre sérialiseur. En utilisant les méthodes PofWriter.writeMap et PofReader.readMap, vous pouvez organiser l'obtention d'un ConcurrentHashMap. Si vous avez besoin d'une version .Net, vous pouvez faire en sorte que votre classe de carte utilise la carte la mieux adaptée à .Net et fournir un sérialiseur personnalisé approprié.