2010-02-19 14 views
0

Je travaille sur une solution de réplication de cache entre les nœudsmise en veille prolongée et la réplication ehcache

nœud A - nœud maître => Hibernate + base de données + Ehcache comme cache secondaire
noeud B - nœud régional => Ehcache en cache prmiary . No Hibernate

Le noeud B est utilisé uniquement comme cache de proximité pour la requête.

Maintenant, je suis mise à jour des données (Say SudentInfo) dans le nœud A, il est conservé et mis en cache correctement. Du côté de la réplication (j'utilise JMS), il envoie un message au nœud B. Mais le problème est que le message envoyé est de type CacheEntry (Deep Inside Element), il n'y a aucun moyen de ressusciter l'objet original (StudentInfo). Ce que j'ai dans le nœud B est CacheEntry avec certains attributs des étudiants mais pas réellement un objet étudiant.

Veuillez noter que je n'ai pas besoin de session/persistance Hibernate dans le noeud B, le noeud B est seulement pour la requête rapide, la persistance est faite par le noeud A. Est-ce que quelqu'un a essayé n'importe quelle solution comme ceci? Est-il possible de convertir CacheEntry en objet réel? ou Dites à ehcache de répliquer l'objet d'origine plutôt que CacheEntry.

Merci pour l'aide

Répondre

0

Que signifie "Ehcache comme cache secondaire" signifie? En tant que cache de second niveau? Parce que si c'est le cas, alors l'objet qui est répliqué n'est pas un objet, ce sont les données qu'Hibernate utilise pour stocker l'objet, c'est essentiellement équivalent aux données de niveau ligne stockées dans votre base de données.

Jetez un oeil à cet article, il explique ce qui est dans le cache de second niveau: Truly Understanding the Hibernate Second-Level cache and Query cache

Ma question serait - pourquoi pas configure le noeud B pour parler à la base de données - alors vous avez un configuration homogoneous. Si la mise en cache fonctionne, alors vous obtenez des valeurs en mémoire cache et ne frappez pas la base de données. Sinon, vous tapez la base de données.

À moins d'une raison topologique, vous ne pouvez pas faire cela - il serait beaucoup plus facile, à mon avis, d'exécuter les deux nœuds avec la même configuration/configuration.