[ Blog ]
[ Wiki ]
[ Slideshare ]
[ Twitter ]

Bloggers recientes

Cesar Capillas Mensajes: 110
Estrellas: 7
Fecha: 18/05/13
Gustavo Fernandez Mensajes: 44
Estrellas: 7
Fecha: 10/05/13
Patricia Yagüe Mensajes: 2
Estrellas: 0
Fecha: 2/04/12

Archivo

Tags

noBlogo - El blog de zylk.net

«Atrás

Carga avanzada de properties desde java con control de cache y de encoding

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

  1. Cargar un ResourceBundle desde un path de filesystem y no desde el classloader
  2. Cargar properties codificados en UTF8 sin que estos hayan sido pasados por el native2ascii
  3. 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

  1. Los ficheros se cargan directamente de filesystem
  2. 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

Comentarios
URL de Trackback: