2011-01-08 4 views
4

J'ai une grande application Java qui est configurée pour utiliser JPA et Hibernate. Il est également censé être configuré pour utiliser ehcaching pour la mise en cache des entités et des requêtes. Cependant, la journalisation sql est activée et aucune entité n'est mise en cache. Toutes les requêtes d'entité se produisent à chaque requête.Comment déterminer par programme si ehcache est en cours d'exécution?

Comment puis-je déterminer au moment de l'exécution si ehcache est déjà en cours d'exécution et s'il pense qu'une entité doit pouvoir être mise en cache?

Je n'ai pas écrit cette application donc je suis coincé un peu ici.

Il utilise des déclarations pour la mise en cache sur les classes.

Il utilise correctement toutes les autres déclarations d'Hibernate pour effectuer les opérations de lecture/écriture.

+0

ehcache ne "run", il est une bibliothèque. Que demandez-vous? – skaffman

Répondre

1

La réponse courte - un débogueur.

Placez un point d'arrêt à l'endroit où vous chargez une entité et suivez-la dans la pile. Voyez si jamais il essaie même d'obtenir l'objet de EHCache. Vérifiez également s'il essaie de le mettre dans le cache après l'avoir extrait de la base de données.

+0

J'espérais éviter cela puisque je ne l'ai pas téléchargé, etc ... Il semble que j'utilise la version 3.3.1 d'ehcache. Cependant, je n'ai pas pu trouver le code source. Donc, vous ne pensez pas qu'il existe un moyen de configurer une sorte de journalisation afin que je sache même chargé et configuré ehcache? – Andrew

+0

@Andrew - Vous n'avez pas besoin de la source EHCache pour voir si elle apparaît dans une pile dans le débogueur. Vous avez juste besoin d'un point d'arrêt. – rfeak

2

Essayez quelque chose comme ceci:

List<CacheManager> tempManagers = CacheManager.ALL_CACHE_MANAGERS; 
System.out.println("# of CMs : " + tempManagers.size()); 
for (CacheManager tempCM : tempManagers) { 
     System.out.println("Got: " + tempCM.getName()); 
     String[] cacheNames = tempCM.getCacheNames(); 
     for (int i = 0; i < cacheNames.length; i++) { 
      String cacheName = cacheNames[i]; 
      System.out.println(cacheName+" - "+ tempCM.getEhcache(cacheName).getStatistics().toString()); 
     } 
} 
Questions connexes