En el último mes en varios proyectos hemos tenido que solventar
varios problemas relacionados con la carga de properties de
idioma o configuracion desde java, las distintas
problemáticas era
- Cargar un ResourceBundle desde un path de filesystem y no desde
el classloader - Cargar properties codificados en UTF8 sin que estos hayan sido
pasados por el native2ascii - Gestionar el ciclo de vida de los properties para que estén
cacheados pero que se recarguen cada x-tiempo
Buscando alternativas para resolver estos problemas
encontré un artículo relacionado con el tema, que ahora no
encuentro, en el que se explicaba que en la jdk 1.6 se puede crear
un controlador «custom» para la carga de los
ResourceBundels, para ello basta con extender la
siguiente clase java
ResourceBundle.Control
desde la que precisamente se pueden controlar los tres
temas comentados.
A continuación se muestra una implementación de ejemplo que
carga los ficheros de filesystem y gestiona el
tiempo que cada properties permanece en la cache. También en
este link se puede ver el código de carga para el tema
del UTF8
Espero que este breve ejemplo os sirva, basta con cambiar las
carga habitual del properties de
ResourceBundle.getBundle(name, new Locale(«es», «ES»));
a
ResourceBundle.getBundle(name, new Locale(«es»,
«ES»), new ZylkControl());
La ejecución de este ejemplo demuestra que
- Los ficheros se cargan directamente de filesystem
- Solo se accede a la lectura del fichero si el time-to-live así
lo indica
Dejo también el código fuente de la clase de ejemplo linkada
en el post