C'est la classe "GeneralCacheAdministrator" qui vous permet de récupérer et de gérer (charger et décharger des objets) le cache directement dans vos classes. Le problème, pour que cela soit efficace c'est qu'il faut bien que votre application n'ai qu'un seul cache et non pas un par instance (cela reviendrai à ce que chaque client utilise son propre cache à lui ! ;-))
Il faut donc créer une classe Singleton, qui ne charge qu'une seule fois (au démarrage ou au premier appel) "GeneralCacheAdministrator" puis qui ensuite retourne systématiquement la même instance de façon à utiliser le même cache. Voici un exemple d'implementation d'une telle classe :
package com.bourzeix.util; import com.opensymphony.oscache.general.GeneralCacheAdministrator;
public class TheCacheManager { // Private constructor suppresses generation // of a (public) default constructor private TheCacheManager() {}
private static class TheCacheManagerHolder { private static GeneralCacheAdministrator admin = new GeneralCacheAdministrator(); }
public static GeneralCacheAdministrator getInstance() { return TheCacheManagerHolder.admin; } }
Ensuite dans votre application, il ne vous reste plus qu'a initialiser le cache en utilisant ce Singleton :
//Recuperation du Cache GeneralCacheAdministrator admin = TheCacheManager.getInstance(); int myRefreshPeriod = 3600; // Une heure !
Puis à l'utiliser, pour y stocker directement des objets :
//sectors String My_Key = "My_Key"; Vector Objects_cached;
// Store in the cache admin.putInCache(My_Key, Objects_cached);
Puis les relire :
// Get from the cache Objects_cached = (Vector) admin.getFromCache(My_Key, myRefreshPeriod);
Et voilà !
1 De Alexis MP -
Comment OSCache gère-t-il la distribution?
Pour info: gregluck.com/blog/archive...