Papers del cajón de los recuerdos…

Revisando entre CDs antiguos, encontré borradores de cuatro artículos personales y uno escrito por mi hermano (Dr. Catedrático del Dpto de Física de la Pontificia Universidad Católica de Chile) que escribimos hace algún tiempo y que fueron publicados por la revista «Informática» de Chile.

La mayoría (al menos los míos) están desactualizados en cuanto a las versiones de librerías y frameworks que referencian. No obstante aún son válidos conceptualmente.

Publicados Bajo GNU Free Documentation License (FDL)

Pueden bajarlos haciendo clic en los  links

  1. «To EJB or not to EJB» :: Pragmatismo sobre el uso o no de los componentes Enterprise Java Beans. Marzo 2005
  2. «Spring y el principio de Hollywood» :: Tutorial introductorio sobre el framework Spring, Mayo 2005.
  3. «Mi Arquitectura Preferida»: Definición de una Arquitectura sencilla y funcional usando J2EE. Diciembre 2005.
  4. «Pruebas Unitarias»:: Turorial sobre el uso del framework JUnit para pruebas unitarias en Java. Marzo 2006.
  5. «La Spintrónica». Teoría sobre la nueva forma de concebir las cargas de los electrones (Spintronica) y sus aplicaciones en la Informática. Agosto 2006.

Cargando un recurso dentro de una aplicación J2EE/Web

Problema:

Programando un template para generar PDFs usando la librería iText en un proyecto J2EE necesité cargar una imagen que se encontraba dentro de la estructura estándar de un archivo .war (Web ARchive)

Las javadocs a diferencia de documentaciónes como las API de Ruby o Python no son explicitas con estos temas, así es que me tomó algún tiempo inferir la forma de hacerlo, por tanto lo muestro aquí como parte de las bases de conocimientos de Continuum.

Nota: Esta forma es genérica, sirve para cargar cualquier recurso, o sea archivos txt, jpg, o xml.

Solución:

La clave esta en el método getRealPath() de la interface javax.servlet.ServletContext (implementada por el container Web J2EE del servidor de aplicaciones donde se deploya o instala la aplicación, así que no se pongan a buscar una implementación :P

Este método retorna el camino físico donde se encuentra el recurso en el servidor independientemente del sistema operativo, o sea resuelve los separadores (‘/’ o ‘\’).

ServletContext sc = request.getSession().getServletContext();
String imgPath = sc.getInitParameter("img-location");
Image img = Image.getInstance(sc.getRealPath(imgPath) + "/imagen.jpg");

Donde ‘img-location‘ fue definido como un parámetro de contexto en el archivo web.xml y contiene el camino local (o sea dentro del .war) de las imágenes:

<context-param>
    <param-name>img-location</param-name>
    <param-value>/extras</param-value>
</context-param>

Esto significa que si por ejemplo la aplicación tiene como conexto web “MYAPP” y fue instalada en un tomcat, y TOMCAT_HOME = /usr/share/tomcat5.5, entonces el camino físico deberá apuntar a

/usr/share/tomcat5.5/webapps/MYAPP/extras

Conócenos

Tel: +56 2 9341951

e-mail: info@continuum.cl

Copyright © 2010 Continuum Ltda.
Coronel Pereira 72. Oficina 903. Las Condes. Santiago. Chile