Traducir Blog

miércoles, noviembre 05, 2008

Implementando MyFaces, Tommahawk y SandBox.

En el mundo de JSF existen muchas implementaciones que siguen el modelo y la filosofia de este robusto Framework de desarrollo enfocado principalmente en la capa de presentación, resaltan Oracle ADF Faces, RichFaces, MyFaces, Trinidad, ICEFaces, etc. Todos enfocados a extender la implementación estandar de JSF siguiendo obviamente el modelo y arquitectura definidos por la implementación de referencia.


En esta ocasión hablaré un poco sobre MyFaces una de las implementaciónes de JSF mas conocida y utilizada, como información general este es uno de los muchos proyectos con exito de Apache, ahora bien,Tommahawk y SandBoxpueden tomarse como extensiones o subproyectos de MyFaces, con componentes y utilidades que no se encuentran en la distribución core de MyFaces, una de las grandes ventajas que tenemos los desarrolladores de JSF es que podemos hacer una mezcla de diversos frameworks dentro de nuestros proyectos y hacer uso de una gran gama de componentes que, a final nos sirven para que los proyectos que desarrollemos haciendo uso de tecnologia J2EE tengan una buena calidad.

Configuración e instalación del Proyecto:

Para comenzar debemos contar con una estructura de aplicación Web, donde cuando menos debemos contar con un direcotorio WEB-INF y en el interior de dichos directorios deberan existir por lo menos los directorios lib, classes, conf (opcional) y los ficheros web.xml (fichero de configuración de la aplicación web) y faces-config.xml (fichero de configuración de JSF).Con esta estructura creada es necesario tener las librerias adecuadas en el directorio WEB-INF/lib para la correcta instalación y configuración de la aplicación es necesario descargar MyFaces y las correspondientes librerias commons al momento de redactar este documento nos encontramos en la versión 1.2.7, para descargarlo la ruta es: http://www.apache.org/dyn/closer.cgi/myfaces/binaries/myfaces-core-1.2.7-bin.tar.gz
El fichero contiene las librerias commons adecuadas deacuerdo la versión de MyFaces. Sin embargo, en algunos casos (dependiendo del servidor de aplicaciones o contenedor web de despliegue) sera necesario la libreria commons-el (Expression Lenguage) este asunto se explicará con detenimiento mas adelante.
Posteriormente debemos descargar Tommahawk desde aqui: http://www.apache.org/dyn/closer.cgi/myfaces/binaries/tomahawk-1.1.9-bin.tar.gz
La versión al momento de escribir este documento es la 1.1.9.
Finalmente nos descargamos SandBox desde la siguiente ruta:
http://people.apache.org/maven-snapshot-repository/org/apache/myfaces/tomahawk/
Una vez ubicadas estas librerias en el directorio WEB_INF/lib procedemos a configurar el proyecto de la forma mas adecuada, en MyFaces es necesario configurar los filtros de extensión para Tommahawk ademas es necesario tener en cuenta que para una aplicación Web normal con MyFaces, no se pueden incluir en el directorio WEB_INF/lib las librerias de la implementación estandar de JSF, es decir los ficheros jsf-api.jar y jsf-impl.jar principalmente debido a conflictos entre las especificaciones de JSF estandar y MyFaces.
Ahora el fichero de configuración de la aplicación Web debera contener las siguientes lineas:


El contenido del fichero es casi "auto-explicativo" solamente por resaltar lo explicado anteriormente sobre la definición del ExtensionFilter aquí es importante anotar que la etiqueta de estas lineas deben de coincidir con la definición del Faces Servlet que como se muestra en las lineas anteriores contiene *.faces lo que indica que cualquier petición a una pagina en el servidor con extensión .faces será procesada por el Servlet de Faces.

Prueba de Configuración y Ejecución:

Para verificar el correcto funcionamiento de la configuración realizada se podra componer una pagina de prueba que haga uso de componentes simples de MyFaces, Tommahawk y SandBox.
Crearemos un fichero llamado index.jsp con el siguiente contenido

FICHERO INDEX.JSP

Si el nombre de la pagina es index.jsp, para que sea manejada por JSF es necesario invocarla como index.faces, esto debido a que la extensión faces es la que se ha configurado en el web.xml

Posibles problemas de configuración:
Es probable que se detecten errores de configuración cuando se configura MyFaces relacionado con librerias especialmente, en algunos casos el servidor de aplicaciones o contenedor Web prevee las librerias necesarias, en otras ocasiones no, como es el caso de las librerias commons-el y commons-lang ahora bien, los errores relacionados con esto como ya se podria imaginar son ClassNotFoundException. por lo tanto es necesario incluirlas tambien en el directorio WEB_INF/lib aquí las dejo:

commons-el
commons-lang

Tambien es posible que el ExtensionFilter no se encuentre bien configurado sin embargo con el fichero de configuración implementado en lineas anteriores se encuentra correctamente configurado y no deberia haber problemas, sin embargo la documentación se encuentra aquí:

http://myfaces.apache.org/tomahawk/extensionsFilter.html
Por el momento es todo por el momento, espero que sea de utilidad, si alguien tiene alguna duda deja tu comentario.

Jdaanial.




[+/-] Continuar leyendo...