Los archivos de propiedades son archivos comunmente utilizados dentro de la programación de aplicaciones sobre todo en aquellos aspectos donde se requiera parametrización, es decir, cargar un conjunto de opciones que en algun momento puedan ser cambiadas sin necesidad de recompilar las clases.
Recordando un poco el manejo de archivos de propiedades, estos pueden ser cargados en un programa en Java por medio del uso de la clase Properties y su método load, el cual es un método sobrecargado que acepta un flujo de entrada, ya sea un InputStream o un Reader.
Debido a la naturaleza de los EJB's, no es tan sencillo cargar directamente mediante un flujo de lectura de archivos, un archivo de propiedades, suponiendo que dicho archivo reside dentro del mismo Jar del EJB o bien en algun otro archivo Jar, debido a que las clases FileInputStream y FileReader actuan sobre el sistema de archivos y como el archivo de propiedades se encuentra comprimido dentro del Jar, estas clases no lograrian tener el acceso adecuado. Ademas debido al despliege propio de cada aplication server, del ejb-jar, sería complicado el acceso mediante rutas relativas y/o absolutas, además de poco óptimo.
Para solucionar este problema se puede hacer uso de la clase Class y su método getResource, el cual obtiene un objeto java.net.URL, en este caso al archivo de propiedades requerido, sin importar que esté dentro del Jar. A su vez la clase URL contiene el metodo openStream, el cual regresa un flujo de tipo InputStream, el cual servirá para la carga del archivo de propiedades. Ejemplo:
public DB2ExceptionMessageParser() throws IOException {
URL url = getClass().getResource("db2messages.properties");
InputStream is = url.openStream();
properties = new Properties();
properties.load(is);
}
El caso anterior carga un archivo de propiedades con mensajes de error personalizados llamado db2messages.properties, asociados a los códigos de error de una base de datos en DB2. Cabe mencionar que tanto el archivo de propiedades, como la clase que carga tal archivo se encuentran en el mismo paquete. En caso contrario se debe especificar la ruta relativa hacia el archivo desde la clase.
¿Por que hacer este blog en vez de hechar la hueva?
La intención de este blog es compartir con la comunidad algunos problemas con los que me he topado cuando me ha tocado realizar algún proyecto o alguna misión especial asi como la forma en que lo solucioné. Asi mismo me gustaría compartir la preferencia que tengo por el Metal y la música oscura y uno que otro tema que mis colaboradores(as) quieran aportar
jueves, 3 de enero de 2008
Suscribirse a:
Comentarios (Atom)