Salut,
Je développe une application web avec EHCache et Hibernate, et j'ai l'impression que les timeout que j'ai spécifié dans la configuration du cache ne sont pas respectés.
Voici un extrait de mon fichier ehcache.xml
J'ai bien <cache usage="read-write"/> dans le mapping de User
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <cache name="dto.User" eternal="false" maxElementsInMemory="100" timeToIdleSeconds="10" timeToLiveSeconds="10" />
Lors du premier chargement (une requête), j'ai bien une ligne "cache miss" dans les logs
Si j'ai bien compris, d'après ma configuration de ehcache, lors de la prochaine requête 10 secondes plus tard, je devrais ré-avoir un cache miss
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 2007-08-09 16:08:49,352 DEBUG - key: dto.User#1 2007-08-09 16:08:49,352 DEBUG - dto.UserCache: dto.UserMemoryStore miss for dto.User#1 2007-08-09 16:08:49,352 DEBUG - dto.User cache - Miss 2007-08-09 16:08:49,352 DEBUG - Element for dto.User#1 is null 2007-08-09 16:08:49,360 DEBUG - Cached: dto.User#1
Apparemment pas ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 2007-08-09 16:09:14,611 DEBUG - Caching: dto.User#1 2007-08-09 16:09:14,611 DEBUG - key: dto.User#1 2007-08-09 16:09:14,612 DEBUG - dto.UserCache: dto.UserMemoryStore hit for dto.User#1 2007-08-09 16:09:14,612 DEBUG - Cached: dto.User#1
Le résultat, c'est que lorsque User est modifié dans une session, les autres sessions web sont désynchronisées.
Je ne sais pas de combien est le timeout appliqué (ou si il y en a un), mais le seul moyen que j'ai trouvé pour retrouver la synchronisation est de redéployer l'application ...
Pas très pratique en production![]()
Si quelqu'un a une idée ?
Partager