2009-07-08 4 views
1

in meiner Datei "struts-config.xml" Ich schrieb schon:Struts 1.2.9 Reload application.properties

Wenn meine Anwendung starten Last erfolgreich application.properties.

Wie kann ich neu laden Eigenschaften (weil ich eine Menge von Eigentum will ändern innen Datei geschrieben) ohne Neustart Anwendung?

Vielen Dank.

T.

+0

Sie möchten also Eigenschaften in Ihrer Datei struts config und .properties ändern, ohne den Container neu zu starten? – amischiefr

Antwort

1

Use (von http://www.docjar.com/html/api/com/opensymphony/xwork2/util/LocalizedTextUtil.java.html):

... 
clearMap(ResourceBundle.class, null, "cacheList"); 

// if it's Tomcat 
if ("org.apache.catalina.loader.WebappClassLoader".equals(cl.getName())) { 
    clearMap(cl, loader, "resourceEntries"); 
} 
... 

private static void clearMap(Class cl, Object obj, String name) 
     throws NoSuchFieldException, IllegalAccessException, 
     NoSuchMethodException, InvocationTargetException { 
    Field field = cl.getDeclaredField(name); 
    field.setAccessible(true); 

    Object cache = field.get(obj); 

    synchronized (cache) { 
     Class ccl = cache.getClass(); 
     Method clearMethod = ccl.getMethod("clear"); 
     clearMethod.invoke(cache); 
    } 
} 

Natürlich können Sie diese Bibliothek importieren einfach und es verwenden, wenn Sie zu wollen.