viernes, septiembre 22, 2006

JSF y JSF sobre Eclipse

En esta entrada voy a tratar de informaros acerca del uso de JSF en general y de JSF sobre Eclipse.

Solo voy a daros algunos apuntes básicos para luego dejaros a vuestro habitual ritmo autodidacta. Aunque por supuesto cualquier duda/problema será atendido por mi parte con mucho gusto.

Lo primero es saber que es JSF (Java Server Faces) para ello lo mejor debería ser leer las especificaciones (http://jcp.org/aboutJava/communityprocess/final/jsr127/index2.html) aunque es lo que nadie se lee (ni yo). En general es un Framework de desarrollo de aplicaciones Web en Java. Y desde mi punto de vista va por detras de ASP.NET aunque mejora alguna cosa de Struts. JSF es solo una especificación, es decir, SUN define un estandar y luego aparecen diferentes implementaciones. Aunque SUN tiene una implementación de referencia, la SUN-RI (http://java.sun.com/javaee/javaserverfaces/), la implementación más usada y la que nosotros vamos a usar es MyFaces de Apache (http://myfaces.apache.org/). MyFaces implementa la especificación y adicionalmente ofrece el proyecto Tomahawk (http://myfaces.apache.org/tomahawk/index.html) que proporciona componentes que extienden la implementación (como un DatePicker un TreeViwe, etc.).

Para hacer las pruebas y ejecutar la aplicación Web usaremos un contenedor Web. En este caso podemos usar Tomcat (http://tomcat.apache.org/).

Para trabajar usaremos Eclipse 3.2. Yo he partido de la distribución Eclipse WTP 1.5 (Web Tools Platform) (http://www.eclipse.org/webtools/). Esta distribución incluye Eclipse 3.2 y todos los plugins necesarios para el trabajo en Web. Si usais la distribución Callisto (http://www.eclipse.org/callisto/java.php) entonces WTP esta incluido (aunque no lo he verificado).

Para poder trabajar con Tomcat desde Eclipse debemos configurarlo. Para ello hay que añadir un nuevo Run-Time de servidor. Esto se hace desde "Window/Preferences/Server/Installed Runtimes". Simplemente es necesario indicar la ruta al directorio donde este el tomcat. Posteriormente ya podemos crear un nuevo servidor (esto se puede hacer desde la pestaña "Servers" con el botón derecho).

Adicionalmente a Eclipse WTP, para trabajar con JSF teneis que instalaros el plugin especifico WTP-JSF (http://www.eclipse.org/webtools/jsf/). Una vez instalado esto debeis configurar el entorno.

Lo primero es registrar las librerías. Esta característica permite crear un conjunto de jars con nombre para su utilización con aplicaciones JSF.

Descomprimir el fichero myfaces-core-1.1.3-bin.zip y observar los jars necesarios en el subdirectorio lib.

Selecciona Window/Preferences/Web and XML/JSF Libraries. Click en nuevo y añade una nueva librería llamandola "MyFaces". Ojo en marcar el check box que indica que es una implementación de JSF "Is JSF Impementation". En esta librería añadiremos los jars de implementación de MyFaces (dos jars que comienzan con myfaces).

Luego añadiremos dos librerías más. Una llamada "JSTL" y otra "Commons" y distribuiremos alli los jars que nos quedan (en Commons todo lo que empieza por commons y en JSTL el jar que empieza por jstl). A partir de ahi ya se puede trabajar con Eclipse y JSF.

Lo siguiente es crear un proyecto JSF. Para ello se debe crear un nuevo proyecto de tipo "Dynamic Web Application" y elegir la configuración "Java Server Faces". En la página JSF Capabilities, añadir las librerías Commons y JSTL y selecciona "Deploy JARS to WEB-INF/lib". Una vez hecho esto el proyecto se crea completamente.

Para comenzar, el tutorial más completo es el siguiente (http://www.coreservlets.com/JSF-Tutorial/). Este tutorial no tiene en cuenta el uso del plugin JSF tool de Eclipse, por lo tanto explica el fichero faces-config.xml y lo modifica "a pelo". Sin embargo gracias al plugin cuando hacemos doble-click sobre el fichero faces-config.xml se abre una ventana y de manera visual se puede configurar todo. El manejo básico de este plugin se puede ver en el siguiente tutorial (http://www.eclipse.org/webtools/jsf/dev_resource/JSFTutorial-RC3/JSFTools_tutorial.html).

Suerte !!