Je prévois d'implémenter une solution de cache dans une application Web existante. Rien de compliqué: essentiellement une carte simultanée qui prend en charge le débordement vers le disque et l'expulsion automatique. La mise en cluster du cache pourrait être requise dans le futur, mais pas maintenant. J'aime les fonctions copyOnRead et copyOnWrite d'ehcache, car cela signifie que je n'ai pas besoin de cloner manuellement des choses avant de modifier quelque chose que je sors du cache. Maintenant, j'ai commencé à regarder Infinispan, mais je n'ai rien trouvé d'équivalent ici. Est-ce qu'il existe?Infinispan équivalent à copyOnRead et copyOnWrite d'ehcache
à savoir, les tests unitaires suivants doivent passer:
@Test
public void testCopyOnWrite() {
Date date = new Date(0);
cache.put(0, date);
date.setTime(1000);
date = cache.get(0);
assertEquals(0, date.getTime());
}
@Test
public void testCopyOnRead() {
Date date = new Date(0);
cache.put(0, date);
assertNotSame(cache.get(0), cache.get(0));
}
Merci. Je crois que copier un graphique d'objet correctement est un problème difficile (dans le cas général), c'est pourquoi je ne voulais pas le faire moi-même. Je vais voir comment ça fonctionne, comme vous le suggérez, mais je pense que je finirai par copier manuellement ce que je retire du cache avant de le modifier. – waxwing
Je pense que la stratégie par défaut utilisée par EHCache pour copier des objets est d'utiliser le mécanisme de sérialisation de Java ... (sérialiser l'objet, puis le désérialiser: vous obtenez une nouvelle instance). Bien sûr, c'est lent, et cela ne fonctionne que si les objets sont sérialisables (mais c'est souvent le cas avec les objets en cache, puisque vous voulez souvent les écrire sur le disque ...). Mais vous avez raison, copier un graphique d'objet est un problème difficile, j'ai utilisé Dozer dans le passé, vous pouvez également regarder: http://stackoverflow.com/questions/1432764/any-tool-for-java-object- to-object-mapping –
Trouvés: http://svn.terracotta.org/svn/ehcache/trunk/core/src/main/java/net/sf/ehcache/store/compound/SerializationCopyStrategy.java –