Siguiendo las prácticas recomendadas, estoy usando Thread.currentThread().getContextClassLoader().getResourceAsStream
para cargar recursos en una aplicación web (como archivos de texto o archivos xml), en lugar de pasar por el archivo API.Recarga de recursos cargados por getResourceAsStream
Sin embargo, esto tiene la desventaja de que si el recurso cambia en el disco, una llamada siguiente a getResourceAsStream sigue devolviendo la versión anterior indefinidamente.
Me gustaría que recogiera la nueva versión. En mi depurador veo que hay un HashMap simple llamado resourceEntries en el classLoader. Usando el reflejo, he podido eliminar una entrada específica y parece que funciona.
Este método es sin embargo frágil.
¿Hay una forma más estándar de hacer esto?
¿Cuál es la implementación exacta de 'ClassLoader' que contiene eso? – Bozho
En este caso era '' org.apache.catalina.loader.WebappClassLoader'' en Tomcat 5. No he probado nuevas versiones de Tomcat aún, pero lo probé en JBoss y no funciona allí (como se esperaba). – akira