Icefaces, JBoss, Maven2 y EJB3: Parte 2

Icefaces, JBoss, Maven2 y EJB3: Parte 2.

Como ya os prometí en el anterior tutorial de esta ‘saga’, en este pretendemos configurar la parte del módulo Web y del módulo Modelo para empezar a trabajar.

Por lo tanto, nuestro objetivo será configurar correctamente la aplicación Web para que se pueda desplegar correctamente en Jboss e Icefaces y configurar el proyecto eclipse de manera correcta al igual que el proyecto EJB.

Suponemos que ya tenéis instalado JBoss 4.2.2 y ‘enlazado’ con eclipse y habéis finalizado con éxito el tutorial anterior.

  1. Estructura del proyecto WEB.

    Al ser un proyecto Web dinámico, y siguiendo la estructura de Maven2, tendremos: (si no lo tenéis así, modificadlo para que así sea)

      • Los fuentes en la carpeta src/main/java

      • Los recursos en src/main/resources (No olvidéis añadirla al proyecto como carpeta de fuentes)

      • Las clases compiladas en: target/classes

      • Los ficheros de la aplicación Web: src/main/webapp

  1. Creando descriptor web.xml.

El descriptor web.xml (en src/main/webapp/WEB-INF) tendrá la siguiente forma:



  1. Fichero de configuración de JSF: faces-config.xml

El fichero de configuración faces-config.xml (en src/main/webapp/WEB-INF) tendrá la siguiente forma:

Por ahora, sólo hemos configurado un bean de Sesión que nos servirá de ejemplo.

  1. Fichero index.jsp y test.jspx

    Crearemos dos ficheros jsp. El primero, que será el fichero de bienvenida, que redirigirá al fichero test.jspx. Nuestro único objetivo será demostrar que hemos configurado todo correctamente.

    El fichero index.jsp (en src/main/webapp) tendrá la siguiente forma:



    El fichero test.jspx (JSP y XML) (en src/main/webapp) tendrá la siguiente forma:

  1. Vamos a crear el Bean.

    Crearemos la clase: com.autentia.tutoriales.icefaces.beans.TestCtrl:



  1. Configuración de las trazas.

    Cread en la carpeta src/main/resources los ficheros:

  • commons-logging.properties

  • log4j.properties

  1. Preparando para desplegar el proyecto WEB

Lo añadimos al servidor Jboss en eclipse (no lo arranquéis aún)




Pulsamos sobre propiedades del proyecto y en ‘J2EE Module Dependencies’ marcamos únicamente ‘Maven Dependencies’




Arrancamos el servidor y entramos en http://localhost:8080/Web

Debemos ver una página muy simple:



  1. Estructura del proyecto Modelo.

    Al ser un proyecto EJB 3.0, y siguiendo la estructura de Maven2, tendremos: (si no lo tenéis así, modificadlo para que así sea)

      • Los fuentes en la carpeta src/main/java

      • Los recursos en src/main/resources (No olvidéis añadirla al proyecto como carpeta de fuentes)

      • Las clases compiladas en: target/classes

  1. Configuración de las trazas.

    Haced lo mismo que hicimos para el módulo Web

  2. Crearemos un EJB de sesión sin estado de prueba.

    Creamos el interfaz Local: com.autentia.tutoriales.modelo.services.TestServices



Y ahora el Bean: com.autentia.tutoriales.modelo.services.TestServicesImpl



Vamos a crearnos una clase que nos permita localizar los EJBs de manera transparente:

com.autentia.tutoriales.modelo.util.EjbLocator



  1. Invocamos al Modelo desde el Web:

    Configuramos el proyecto Web en eclipse añadiendo la dependencia del proyecto Modelo:




Editamos la clase TestCtrl dejándola así:





Mostramos el valor en la página test.jspx:



Invocamos a la aplicación (no olvidéis añadir el proyecto Modelo al servidor y arrancarlo).: http://localhost:8080/Web/

Veremos una página muy simple:




En apariencia sólo tenemos una página muy sencilla, pero la realidad es que ya tenemos un arquetipo de aplicación bastante interesante técnicamente:

  • JSF e Icefaces preparaditos para utilizar (me encanta eso del partial submit de icefaces).

  • EJB 3.0 deseando ayudarnos con su magia.

  • Las dependencias de las librerías manejadas por Maven2 y ‘enganchadito’ todo con Eclipse gracias a m2Eclipse.

  • Desplegado y funcionando en Jboss.

Aún nos queda trabajo por hacer… os adelanto que lo próximo será inventarnos un modelo de datos, crearnos un esquema en MySQL que lo represente, crear las clases de entidad (Entity) y hacernos un DAO implementado en un EJB de sesión sin estado.