Está en la página 1de 14

2

Preparación
En este capítulo, vamos a configurar y entender nuestro proyecto, a fin de estar listo para
desarrollar una aplicación que utiliza el marco de RichFaces.

A continuación te explicamos cómo crear un proyecto (tanto automática como manualmente) y


los entornos de desarrollo integrado (IDE) que puede utilizar para aumentar su productividad
durante el desarrollo.

Vamos a hablar un poco acerca de otras tecnologías, como JBoss Seam y Facelets. Usted no
tiene que saber nada de esto para entender este libro, pero le sugerimos que aprenda a
medida que avanzamos ya que puede realmente aumentar su productividad.

Creación de un proyecto RichFaces JSF la forma más sencilla


Obviamente, podemos crear el proyecto desde cero con nuestro IDE preferido, pero es una
tarea tediosa y larga, ya que tiene que establecer una gran cantidad de archivos de
configuración y controlar todas las dependencias de las librerías. El método más conveniente
de crear un nuevo proyecto es utilizar un IDE que soporta (el plugin de Jboss, por ejemplo
Eclipse) o utilizar una herramienta como seam-gen.

En la vida real, debe utilizar RichFaces, junto con otras tecnologías, como JBoss Seam,
Facelets, JPA y así sucesivamente. La tarea de crear un proyecto completo y listo para
ejecutarse (por diferentes IDEs) se hace muy bien con esta herramienta, que está incluido en la
distribución de JBoss Seam.

Aunque se puede configurar todo esto de manera manual (y vamos a ver cómo se hace esto
más adelante en este capítulo), pero en el 90% de los proyectos "reales" éste un buen punto de
partida, lo que significa que se ahorrará mucho tiempo.

Seam-gen

Recomendamos encarecidamente el uso de la seam-gen para la creación de su primer


proyecto. Al usarlo, usted será capaz de crear "en segundos", un nuevo proyecto, que estará
listo para implementar y se podrá abrir desde cualquier IDE tales como Eclipse, IntelliJ IDEA y
NetBeans.

Seam-gen crea un script ANT, archivos de configuración comunes y una estructura básica con
soporte de plantillas Facelets.

Además, se puede generar automáticamente las entidades de JPA de una base de datos
utilizando la herramienta hbm2java Hibernate y una sencilla aplicación CRUD (altas, listados,
cambios, bajas, utilizando el enfoque de Ruby on Rails), aunque no lo haremos en este
momento.
Seam-gen utiliza RichFaces como la librería de componentes por defecto (tanto seam-gen y
RichFaces son proyectos de JBoss) y se configuran automáticamente en el proyecto. Vamos a
utilizarlo y empezaremos rápidamente a concentrarnos en las características de RichFaces.

El proyecto que se va a desarrollar tiene soporte para EJB, JPA, JSF (por supuesto!), Facelets,
JBoss Seam y RichFaces. Todas las librerias se colocan dentro del directorio lib del proyecto
generado y puede actualizarlas con sólo sobrescribirlos (véase más sobre esto en la sección: la
actualización de las librerías RichFaces en un proyecto generado por seam-gen).

Descargue e instale seam-gen


Seam-gen es una herramienta de línea de comandos y es muy sencillo de usar. En primer
lugar, vamos a descargarlo e instalarlo de la siguiente manera:

• Ir a http://seamframework.org/Download y descargar la última versión de JBoss Seam


(actualmente la version 2.2)

• Descomprimir el paquete zip (o tar.gz) en su unidad de disco duro local

Como puede ver, no es una instalación real, porque seam-gen está incluido en el paquete de
distribución de JBoss Seam.

Generación de un proyecto con seam-gen


Crear un proyecto con la seam-gen es bastante simple. Basta con abrir la ventana de terminal,
navegar dentro de la directorio de JBoss Seam donde tienes descomprimido el paquete y
lanzas el siguiente comando si está utilizando Microsoft Windows:

seam setup

Si usted está usando un sistema operativo tipo Unix como GNU / Linux o Mac OS X, introduzca
el siguiente comando:

./seam setup

Seam-gen le hará algunas preguntas, que usted tendrá que responder. Asegúrese de decir que
no cuando se le pregunta use ICEFaces instead of RichFaces (no es la respuesta por
defecto), y sí a la pregunta "Are you working with tables that already exist in the
database?", Si desea generar de las entidades de una base de datos existente.

En el próximo capítulo, vamos a desarrollar un ejemplo a partir de un proyecto de generado por


seam-gen y vamos a ver el significado de cada pregunta.

Cuando la instalación esté completa, usted puede llamar a seam-gen nuevamente para crear el
proyecto con el siguiente comando, si está utilizando Microsoft Windows:

seam create-project

Si usted está usando un sistema operativo tipo Unix, como GNU / Linux o Mac OS X, utilizar el
siguiente comando:

./seam create-project

Este comando crea un proyecto vacío con todo lo necesario para comenzar la codificación.
Para generar las entidades JPA, se puede introducir el siguiente comando si está utilizando
Microsoft Windows:

seam generate-model

Si usted está usando un sistema operativo tipo Unix, utilice el siguiente comando:

/seam generate-model

Usted puede utilizar otros comandos para generar una aplicación CRUD, nuevas acciones, los
formularios y así sucesivamente. Para obtener una lista completa de comandos, escriba el
comando siguiente si está utilizando Microsoft Windows:

seam help

Si usted está usando un sistema operativo tipo Unix, utilice el siguiente comando:

./seam help

Para obtener más información acerca de seam-gen, también puede consultar la documentación
oficial de JBoss Seam, en http://docs.jboss.org/seam/2.2.0.GA/reference/en-
US/html/gettingstarted.html

Los proyectos generados por seam-gen se pueden abrir utilizando el IDE preferido (o si usa
Eclipse, puede importarlos al espacio de trabajo) y está listo para ser editado a fin de aplicar las
nuevas características.

Actualización de las librerías RichFaces en proyecto generado por


seam-gen
Cada vez que se lanza una nueva versión del marco RichFaces, la actualización de su
proyecto es muy simple, como se muestra en los siguientes pasos:

1. Descargue el último paquete ZIP de RichFaces (la versión bin) de


http://www.jboss.org/richfaces/download/stable.html.

2. Descomprima el paquete en su disco duro.

3. Entra en el directorio lib de la directorio RichFaces que acaba de descomprimir.

4. Cambie el nombre de los archivos de librería, quitando el número de versión (por ejemplo,
richfaces-api-3.3.1.GA se convierte en RichFaces-api.jar).

5. Copie todos los tres archivos en el directorio lib de su proyecto, sobrescribiendo los
antiguos.

6. Llame al programa ant con el fin de implementar las nuevas librerías en el servidor de
aplicaciones.

Vista general de la estructura del proyecto


Una vez que terminemos de utilizar seam-gen, tenemos un proyecto completo para empezar a
trabajar. Aquí hay una captura de pantalla de la estructura del proyecto, como podemos ver
cuando se abre en Eclipse:
Usted notará que hay tres directorios de origen (src/main, src/hot, and src/test) y otros
directorios que se describe a continuación:

Directorio Descripción
src/main Contiene las clases del modelo (las entidades de la JPA que hemos visto).
src/hot Se trata de la directorio de origen para los beans de sesión, los componentes
de seam y todo lo que su proyecto necesita para poder controlar el modelo y
la vista.
src/test Contiene las clases de prueba.
/classes Contiene las clases compiladas (es usado por Eclipse, no tienes que
preocuparte de eso).
/lib Contiene todas las librerías del proyecto. Si desea añadir una nueva librería,
basta con agregarla aquí y luego agregar el nombre de la librería en
deployed-jars-ear.list y deployed-jarswar.list (dependiendo de si desea
agregar a la librería en el paquete EAR o el paquete WAR).
/nbproject Contiene la información del proyecto para el IDE NetBeans.
/src Esta es la directorio que contiene los archivos fuente (que están en la parte
superior como directorios fuente).
/view Es la raíz de los archivos web publicados y contiene todo el material
relacionado con la web, como archivos XHTML, imágenes, otros directorios,
swf, y todas las cosas que usted necesita para que funcionen sus
aplicaciones web.

Además de estas directorios, podemos ver otros archivos en las pantallas anteriores, como el
archivo AdvContactManager.ipr (es decir, el archivo de proyecto para el IDE de IntelliJ Idea) y
el archivo build.properties (para configurar el directorio principal de JBoss y el dominio donde
se desplegará la aplicación). Después de estos, se puede ver el archivo build.xml (un script de
ANT que administra la fase de despliegue y otras acciones), algunas configuraciones de
lanzamiento, la lista de despliegue de la librería que hemos visto, el archivo de propiedades
para la consola de Hibernate, el archivo seam-gen y el archivo de ANT para la tarea de
validación.

Despliegue incremental en caliente


El soporte para el despliegue en caliente, se puede activar en el modo debug en Seam y
Facelets agregando la siguiente línea en el archivo components.xml que se encuentra en la
directorio resources/WEB-INF/:

<core:init debug="true">

Durante el modo debug, puede cambiar cualquier archivo de XHTML Facelets y pages.xml, y
ver los cambios inmediatamente.

Desafortunadamente, no puede hacer lo mismo con los componentes Enterprise Java Bean
(EJB), pero es un medio de soporte para los componentes Seam de POJO. De hecho, puede
cambiar el contenido de los métodos de una clase e inmediatamente ver las modificaciones sin
necesidad de reiniciar la aplicación. Sin embargo, la única limitación es que si cambia la firma
del componente (por ejemplo, agregar, quitar o cambiar nombres de los métodos), tendrá que
que reiniciar la aplicación para ver las modificaciones. Esto no es una gran limitación en el
desarrollo, pero se está trabajando para solucionarlo.

Soporte para Seam y Facelets


JBoss Seam, se está volviendo muy popular, ya que realmente puede hacer lo que promete: se
simplifica el uso de EJB y marcos JPA con JSF.

Se mantiene en la cima de Java EE 5, ampliándolo y resolviendo los problemas de integración,


simplificando el desarrollo de aplicaciones empresariales. Una de las cosas más importantes
en el desarrollo de JSF es que SEAM proporciona un enfoque para integrar EJB y JSF en una
solución limpia y consistente, agregando muchas características nuevas y reduciendo los
pasos de configuración.

Además de la integración de EJB y JSF, Seam tiene también tiene interesantes, funciones
nuevas y le sugerimos que considere esta tecnología, durante el desarrollo de una aplicación
JSF.

Como un plus, muchas de las ideas procedentes de seam se integrarán en la nueva


especificación de Java EE (las principales características de SEAM estarán en un nuevo marco
normativo llamado Web Beans JSR-299). Por lo tanto, el uso y la comprensión de esta
tecnología es una inversión para el futuro.

Los Facelets de código abierto son muy útiles ya que permiten el uso de XHTML en páginas
web JSF, mejorando el rendimiento, la legibilidad y la productividad. Mientras utilice Facelets,
no tiene que incluir el texto en la etiqueta f:verbatim. Además, ofrece un completo (y
avanzado) sistema de plantillas, soporte de depuración, páginas de error mejoradas (con la
posición exacta del error) y varios componentes de gran utilidad. La especificación de JSF 2.0
tiene muchas ideas de Facelets.

RichFaces trabaja con Seam y Facelets. En el caso de seam 2, sólo tienes que definir el
manejador de vista Facelets context-param (como hemos visto con soporte Facelets) y
luego utilizar el filtro de seam sin configurar nada más.
La aplicación en el mundo real de que vamos a desarrollar en los próximos capítulos utiliza las
tecnologías JBoss Seam y Facelets (pero usted no tiene que saber éstos para entender el
código, también se puede utilizar con otros marcos). Puede obtener el archivo web.xml de
JBoss Seam, Facelets y JBoss RichFaces que da soporte al código fuente de la aplicación.

Agregar manualmente RichFaces a su proyecto JSF existente


Agregar las librerías RichFaces a un proyecto existente es seguro y usted no verá ningún
comportamiento diferente en el código no RichFaces existente.

En esta sección, vamos a descubrir la manera de integrar las librerías RichFaces manualmente
en sus proyectos.

Descargar RichFaces
La última versión de RichFaces puede descargarse como un archivo de paquete ZIP (o tar.gz)
desde http://www.jboss.org/jbossrichfaces/downloads/ (elija la versión bin).
Extraiga el archivo en su disco duro y listo.

Usted encontrará la directorio lib dentro del paquete de distribución, que contiene los archivos
de la librería JAR y tres directorios de documentación:

• apidocs: Contiene el documento generado por javadoc sobre las clases de Java que vienen
con la librería

• tlddocs: Contiene documentación acerca de las etiquetas (y sus atributos), que vienen con la
librería (generado por la etiqueta generadora de documentación de librerías)

• docs: Contiene la guía del usuario, el documento de preguntas frecuentes, el documento de


migración y la guía de CDK

De la misma dirección, también se puede descargar ejemplos de temas para tener mas temas
para su aplicación (sin embargo, en el paquete estándar puede elegir entre un conjunto
estándar de temas), vamos a ver cómo hacer más temas en el capítulo 9, Creación de un
nuevo plugin de tema.

Configuración básica
Esta sección explica cómo configurar un proyecto JSF básico a fin de dar el soporte de
RichFaces manualmente.

¿ Dónde colocar las librerías ?


La primera cosa a hacer es (obviamente) agregar las librerías RichFaces en la directorio lib.

Las librerías del marco son:

Librería JAR Descripción


richfaces-api-X.Y.Z.GA.jar Contiene todas las interfaces y las clases
base del marco
richfaces-impl-X.Y.Z.GA.jar Contiene las clases de implementación del
marco
richfaces-ui-X.Y.Z.GA.jar Contiene las clases de implementación de los
componentes del marco
Las otras librerías opcionales son las pieles (usamos laguna en nuestro ejemplo) y son:

• laguna-X.Y.Z.GA.jar
• glassX-X.Y.Z.GA.jar
• darkX-X.Y.Z.GA.jar

Si usted desarrolla su propio tema, necesitará colocar el archivo JAR del tema en la ruta de su
clase. Esta es una imagen de ejemplo de la aplicación web que vamos a desarrollar usando el
tema laguna:

La siguiente captura de pantalla, en cambio, muestra la misma aplicación utilizando el tema


darkX:
Y el tema glassX como se muestra en la siguiente pantalla:
Las librerías podrán permanecer en la directorio de clases, si su proyecto se implementa en un
archivo de aplicación Web (WAR del inglés Web application ARchive), todas las librerías
pueden permanecer en el directorio WEB-INF/lib.

Si está implementando un (EAR del inglés Enterprise ARchive ), el directorio EAR/lib puede
contener la librería richfaces-api-X.Y.Z.GA.jar y los demás archivos podrían estar en WEB-
INF/lib del WAR contenida en el EAR.

En resumen, tenemos la siguiente tabla:

Implantado en Insertar las librerías Las librerías RichFaces que se insertarán


RichFaces dentro de
Paquete WAR <raíz war>/WEB-INF/lib/ • richfaces-api-X.Y.Z.GA.jar
• richfaces-impl-X.Y.Z.GA.jar
• richfaces-ui-X.Y.Z.GA.jar (Todas las librerías
RichFaces )
Paquete EAR <raíz ear>/lib/ richfaces-api-X.Y.Z.GA.jar
<raíz ear>/<raíz • richfaces-impl-X.Y.Z.GA.jar
war>/WEB-INF/lib/ • richfaces-ui-X.Y.Z.GA.jar

Registro de RichFaces
El segundo paso es el registro RichFaces agregando un poco de código de configuración al
archivo web.xml.

Vamos a agregar clases RichFaces y configurar nuestra aplicación JSF utilizando un filtro
estándar.

En primer lugar, estableceremos algunos parámetros de contexto (sólo tiene que añadir en el
interior del elemento web-app):

<!— Skin used by RichFaces -->


<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>laguna</param-value>
</context-param>
<!-- Use RichFaces also for standard HTML controls -->
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>

org.richfaces.SKIN y org.richfaces.CONTROL_SKINNING son los parámetros


relacionados con el tema. El primer parámetro asigna el tema que RichFaces ha de usar y el
segundo le dice el marco que se aplicará al tema de los controles estándar. Vamos a ver las
otras opciones en los capítulos posteriores.

Después de eso, tenemos que registrar y asignar el filtro RichFaces utilizando el código de
configuración siguiente:

<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>

Si usted está usando un nombre diferente para el servlet Faces, lo debe de cambiar.

El filtro de RichFaces puede ahora funcionar correctamente y ya se puede empezar a codificar


utilizando sus componentes!

Soporte a Facelets
Como hemos dicho, RichFaces da soporte a Facelets sin ningún problema.

Con el fin de agregar a su proyecto, usted no tiene mas que definir FaceletViewHandler en
el archivo faces-confg.xml como con la configuración estándar de Facelets. Sólo tiene que
configurar el parámetro de contexto org.ajax4jsf.VIEW_HANDLERS y el filtro de RichFaces
lo manejará adecuadamente.

Este es el código que tienes que insertar en el archivo web.xml:

<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>

Como puede ver, acabamos de establecer el parámetro de contexto


org.ajax4jsf.VIEW_HANDLERS para decirle a RichFaces para utilizar el controlador de
vista Facelet.

Entornos Integrados de Desarrollo


Puede codificar JSF a mano, pero es obvio que es mejor y más productivo tener un IDE que
nos ayude a automatizar las tareas repetitivas. Los IDEs más populares dan soporte a las
funcionalidades básicas de JSF, de modo que los componentes de RichFaces se reconocen
sin ningún problema.

Sin embargo, como RichFaces es un producto de JBoss, aunque hay soporte extra en los
diferentres IDEs (tienen una versión de código abierto y una comercial, vamos a ver más sobre
éstos en la siguiente sección), y puede agregar automáticamente RichFaces a sus proyectos
JSF. Además, dan soporte visual al desarrollo de componentes que pueden ser útiles en
muchos casos.

Herramientas Eclipse/JBoss

JBoss Tools es una colección de plugins Eclipse hecha por JBoss para dar soporte a la
mayoría de sus tecnologías, tales como RichFaces, Seam, Hibernate/JPA, JBoss Application
Server y jBPM. Se agregan muchas de las características a Eclipse Web Tools Platform
(WTP), lo que hace la vida más fácil para aquellos que quieren utilizar esos marcos. Por
supuesto, también tiene todas las características de la plataforma Eclipse y la posibilidad de
agregar diversos plugins en el mismo entorno de desarrollo.

Este es la versión de código completamente abierta y libremente descargables. Las


plataformas soportadas son Windows, Linux y Mac OS X.
Puede ver algo más en http://jboss.org/tools/.

Dónde descargar y cómo instalarlo


JBoss Tools es un conjunto de plugins Eclipse, así que, para instalarlo primero tenemos que
instalar el IDE de Eclipse. Usted puede hacer todo desde el sitio web de Herramientas de
JBoss, siguiendo estos sencillos pasos:

1. Ir a la http://jboss.org/tools/.

2. Seleccione el menú Downloads, a continuación, Stable Releases, a continuación, haga clic


en la última versión ( actualmente es la versión 3.0 GA).

3. Usted será redirigido a una página con una lista de todos los plugins (también puede instalar
un subconjunto de todos los plugins de distribución). Seleccione la primera, es decir, todos los
plugins, y descargar la versión correcta de la plataforma que está utilizando (los enlaces están
en el lado derecho de la tabla en la columna Download).

4. Mientras se descargan las herramientas JBoss, haga clic en el enlace en la parte superior de
la tabla (ahora el vínculo es Requires Eclipse Ganymede 3.4.2), para descargar Eclipse.

5. Se le redirige a la página web del proyecto Eclipse.

6. Hay una tabla con todas las versiones de Eclipse que se puede descargar.

7. Descargar el primero (el IDE de Eclipse para desarrolladores de Java EE), haciendo clic en
el enlace a la derecha de acuerdo a su plataforma, siguiendo las instrucciones de descarga.
Una vez que termine las descargas, vamos a instalarlos:

1. Para instalar Eclipse, basta con descomprimir el paquete de Eclipse y copiar la directorio de
eclipse en su ubicación final dentro de su unidad de disco duro y ya está.

2. Ahora descomprima el paquete de JBoss Tools, usted tiene una directorio llamada eclipse
que contiene dos directorios (es decir features y plugins).

3. Copiar el contenido de la directorio de la directorio features de JBoss Tools hacia la


directorio features dentro de la directorio de instalación de Eclipse.

4. Ahora haremos lo mismo con la directorio de plugins (copiarlo desde JBoss Tools a la
instalación de Eclipse).

5. Usted está listo, ahora inicie Eclipse entrando en la directorio y haciendo doble clic sobre el
archivo ejecutable.

JBoss Developer Studio


JBoss Tools, JBoss Developer Studio ofrecen plug-in de Eclipse con soporte a las tecnologías
de JBoss. Utiliza los mismo plugins como JBoss Tools, pero que hayan sido certificadas con
cinco años por parte de RedHat (JBoss es una compañía de RedHat). También cuenta con un
instalador que simplifica la fase de instalación (la instalación cuenta con un asistente paso a
paso).

JBoss Developer Studio es un producto comercial basado en una suscripción (pero es muy
barato). Las plataformas soportadas son Windows, Linux y Mac OS X.

Si usted elige utilizarlo para desarrollar, entonces puede acceder a la página de inicio
http://www.jboss.com/products/devstudio.

Importar un proyecto generado por seam-gen dentro de Eclipse


Después de generar un proyecto con seam-gen, si usted está usando Eclipse (con JBoss Tools
o JBoss Developer Studio), puede importarlo a su área de trabajo.

Esta es una tarea muy simple que se muestra como sigue:

1. Seleccione la opción import en el menú file.

2. Abra el nodo del árbol General y seleccione la opción Existing project into Workspace.

3. Seleccione la directorio principal (directorio raíz) donde se encuentra el proyecto generado,


haciendo clic en el botón Browse.

4. El proyecto será seleccionado para la importación.

5. También seleccione la casilla de verificación Copy projects into workspace si el proyecto


no está en el directorio área de trabajo.

6. Haga clic en el botón Finalizar.

7. Su proyecto ahora ya está listo en su área de trabajo.


IntelliJ IDEA
IntelliJ IDEA es un IDE comercial muy bueno que soporta muchas características (de J2SE a
J2EE y más) y ofrece buenas herramientas para trabajar. Es compatible con muchos lenguajes
y marcos (JSF, Seam, Hibernate / JPA, Spring, Struts, Struts 2, etc.) los cuales están bien
integrados en la propia plataforma.

La experiencia en desarrollo es muy buena, si está utilizando JBoss Seam y la seam-gen,


obtendrá soporte externo para este IDE.

Si no se usa la seam-gen tiene que agregar y configurar el proyecto a mano para agregar el
apoyo RichFaces (sin embargo, como hemos visto es una tarea muy simple).

Tiene una licencia basada en productos comerciales (hay diferentes precios según el tipo de
licencia) y se ejecuta en Windows, Linux y Mac OS X.

Usted puede encontrar más información al respecto en http://www.jetbrains.com/idea/.

Dónde descargarlo y cómo instalarlo


Instalar IntelliJ IDEA es realmente muy simple, sólo basta con ir a
http://www.jetbrains.com/idea/download/ y descargar la versión de su sistema operativo:

• En Windows: Ejecute el archivo .exe y siga el asistente de instalación.

• En Mac OS X: Montar (haciendo doble clic) el archivo .dmg, y copie a su directorio de


aplicaciones.

• En Linux: Descomprimir el archivo tar.gz y ejecutar idea.sh dentro de la directorio


descomprimida.
Resumen
En este capítulo, aprendimos cómo configurar nuestro entorno para la creación de un proyecto
sencillo, utilizando la herramienta de generación de seam, añadiendo soporte para Seam y
Facelets. Además, hemos visto la configuración manual para las librerías de RichFaces y
empezó a manejar su IDE favorito, el cual podemos utilizar mientras desarrollamos con este
marco.

En el próximo capítulo, vamos a crear un ejemplo sencillo para ver cómo todas estas cosas
funcionan en la práctica.

También podría gustarte