Wie klar ResourceBundle-cache

Dies ist eine webapp läuft auf Tomcat mit Guice. Laut der docs, wir sollten in der Lage sein zu rufen ResourceBundle.clearCache(); klar, das ResourceBundle-cache und vermutlich Holen Sie sich die neuesten aus dem bundle property-Dateien.

Wir haben auch versucht, die folgenden:

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!

und

ResourceBundle.clearCache(this.class.getClassLoader());

Das Verhalten, das ich erwarte ist:

  1. Starten Sie tomcat und schlug eine Seite und es sagt, 'Hallo Welt'
  2. Ändern Sie die Eigenschaften-Datei mit 'Hallo Welt' , 'auf Wiedersehen Erde'
  3. Löschen Sie den cache mit einem servlet
  4. Treffer die Seite und erwarten, um zu sehen, 'auf Wiedersehen Erde'

Also Frage ist, wie ist ResourceBundle.clearCache() tatsächlich funktioniert ? Und gibt es eine generische Datei-cache müssen wir auch klar ?

haben Sie irgendwelche Lösungen?
ResourceBundle.clearCache() hinzu, der auf Java 1.6. Ich arbeite an einer Java-1.4 server und das war der Grund, warum clearCache() arbeitet nicht wie erwartet.

InformationsquelleAutor Ben George | 2012-03-22

Schreibe einen Kommentar