Open IT Experts for Enterprise

Zylk empresa de desarrollo de ecommerce

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

Gustavo Fernández
Gustavo Fernández

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

 

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


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

Si te ha parecido interesante comparte este post en RRS

Facebook
LinkedIn
Telegram
Email

Leer más sobre temas relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *