Korzystając ze sprawdzonych metod, używam Thread.currentThread().getContextClassLoader().getResourceAsStream
do ładowania zasobów w aplikacji internetowej (takich jak pliki tekstowe lub pliki xml) zamiast przechodzenia przez interfejs API pliku.Ponowne ładowanie zasobów załadowanych przez getResourceAsStream
Ma to jednak tę wadę, że jeśli zasób ulegnie zmianie na dysku, następujące wywołanie getResourceAsStream powoduje nieodwracalne zwrócenie starej wersji.
Chciałbym jednak, aby odebrał nową wersję. W moim debugerze widzę prostą mapę HashMap o nazwie resourceEntries w klasieLoader. Korzystając z refleksji, udało mi się usunąć konkretny wpis i wydaje się, że działa.
Ta metoda jest jednak delikatna.
Czy istnieje bardziej standardowy sposób na zrobienie tego?
jaka jest dokładna implementacja 'ClassLoader', która to posiada? – Bozho
W tym przypadku był to '' org.apache.catalina.loader.WebappClassLoader'' w Tomcat 5. Nie próbowałem jeszcze w nowszych wersjach Tomcat, ale po prostu wypróbowałem go w JBoss i nie działa tam (zgodnie z oczekiwaniami). – akira