Comment effacer ResourceBundle cache
C'est une webapp en cours d'exécution sur Tomcat, à l'aide de Guice. Selon les docs nous devrions être en mesure d'appeler ResourceBundle.clearCache();
pour effacer le ResourceBundle cache et probablement d'obtenir la plus récente du lot de la propriété des fichiers.
Nous avons aussi essayé le suivant:
Class klass = ResourceBundle.getBundle("my.bundle").getClass().getSuperclass();
Field field = klass.getDeclaredField("cacheList");
field.setAccessible(true);
ConcurrentHashMap cache = (ConcurrentHashMap) field.get(null);
cache.clear(); //If i debug here I can see the cache is now empty!
et
ResourceBundle.clearCache(this.class.getClassLoader());
Le comportement que j'attends est:
- Démarrage de tomcat et appuyez sur une page et il dit 'Bonjour le Monde'
- Modifier le fichier de propriétés contenant 'Bonjour le Monde!" à "Adieu la Terre"
- Vider le cache à l'aide d'une servlet
- Frapper la page et attendre de voir "Adieu la Terre"
Donc, la question est, comment est ResourceBundle.clearCache() fonctionne réellement ? Et est-il un générique du cache de fichiers nous devons clair aussi ?
avez-vous trouver des solutions à cette situation?
ResourceBundle.clearCache() est ajoutée à la version 1.6 de Java. Je travaillais sur un Java 1.4 serveur et que c'était la raison pour laquelle clearCache() ne fonctionne pas comme prévu.
ResourceBundle.clearCache() est ajoutée à la version 1.6 de Java. Je travaillais sur un Java 1.4 serveur et que c'était la raison pour laquelle clearCache() ne fonctionne pas comme prévu.
OriginalL'auteur Ben George | 2012-03-22
Vous devez vous connecter pour publier un commentaire.
Cela a fonctionné pour moi:
Notes:
ResourceBundle.getBundle()
méthode après avoir invoquéclearCache()
méthode.
OriginalL'auteur Devrim
Je ne crois pas que vous pouvez en effet le rechargement d'un déjà créé ResourceBundle exemple depuis son contrôle interne à la classe a déjà été créé. Vous pouvez essayer cela comme une solution de rechange pour l'initialisation de votre bundle:
Cela pourrait très bien être le cas. Permettez-moi de penser à une autre façon de contourner ce problème.
avez-vous trouvez une solution?
OriginalL'auteur Perception
J'ai trouvé cette solution (qui fonctionne avec tomcat):
Comment appeler :
La classe personnalisée :
OriginalL'auteur izanat
peut-être ce post peut résoudre votre problème.
OriginalL'auteur prongs
OriginalL'auteur sudhakar tokala
Cela fonctionne, le forum, vous pouvez intercepter la première création de la ressource pack:
OriginalL'auteur gabor