lunes, 22 de noviembre de 2010

Entorno de desarrollo para Apache Tapestry 5

Apache Tapestry
Los desarrolladores de Apache Tapestry implementaron en la versión 5 una característica que hace del entorno de desarrollo de este framework sea altamente productivo. La característica es similar a la presente en otras tecnologías como en los JSP y otros frameworks como Grails y es treméndamente útil ya que puede suponer un ahorro considerable en el tiempo de desarrollo. En Tapestry la caracteristica se llama «live class and template reloading» y consiste en que los cambios que se realizan en los componentes y páginas son cogidos en caliente por Tapestry sin necesidad de hacer un redespligue o reiniciar el servidor de aplicaciones. Ya que en un desarrollo los cambios son continuos la necesidad de ir viendo frecuentemente como van quedando es imprescindible.

Para ver esta caracteristica en funcionamiento utilizaré el ejemplo Hola Mundo con Tapestry 5 de una entrada anterior. Los cambios a realizar son pocos y nada complicados. Básicamente consisten en tener generada en un directorio la estructura de la aplicación WAR. Partiendo de la estructura de codigo fuente que ya teniamos en el ejemplo nos faltaría generar en el directorio WEB-INF/lib las librerías de la aplicación y en el directorio WEB-INF/classes las clases compiladas. Para el caso de las librerías basta con crear una nueva tarea en Ant que nos copie las librerías del directorio «lib» a «src/main/web/WEB-INF/lib», esto se hace en la nueva tarea «copiar-libs» de Ant del archivo build.xml. Hay algunas librerías que no son necesarias y no las copiamos por eso los excludes de la tarea copiar-libs (son las librerias servlet-*.jar y selenium-*.jar).

Para el caso de las clases compiladas le indicaremos al IDE que usemos que nos las genere en «src/main/web/WEB-INF/classes» en vez del directorio bin en el caso de eclipse. Para ello y en eclipse iremos a las propiedades del proyecto en introduciremos en el campo de texto «Default output folder» «HelloWorldTapestry5/src/main/web/WEB-INF/classes».


Con estas dos cosas ya tenemos la estructura de una aplicación WAR en el sistema de archivos ahora nos queda desplegar la aplicación en el servidor de aplicaciones. Para el caso de Tomcat basta con copiar un archivo xml al directorio de Tomcat «conf/Catalina/localhost» (este archivo xml está en la carpeta misc del código fuente de la aplicación). El nombre del archivo será el nombre de contexto de la aplicación asi que en este caso y habiendo realizado estas tres cosas accederemos a la aplicación con la URL «http://localhost:8080/helloworld-tapestry5» y podremos probar que haciendo un cambio a la página Index (en el archivo Index.tml) y simplemente actualizando la página en el navegador los cambios se aplican de inmediato.

Como digo una caracteristica muy util, que ahorra mucho tiempo y que contribuyen a hacer de Tapestry para mí uno de los mejores frameworks Java con el que he tenido la oportunidad de desarrollar.

Referencia:
Documentación sobre Apache Tapestry
Codigo fuente Hola Mundo Apache Tapestry 5 (con live reloading)