lunes, 13 de abril de 2009

Día 50: EJB y JSF (8ªP) / JBoss-Seam (1ºP)

JBoss-Seam
Para facilitar EJB
Utiliza ANT

Más información AQUÍ

Lo utilizaremos para facilitarnos el desarrollo de proyectos que utilicen JSF y EJB

Primer proyecto seam
Creamos un nuevo proyecto, de tipo "seam web project"
Lo llamaremos "seamcea"
De target runtime seleccionamos un servidor de aplicaciones "JBoss 5.0 Runtime"
Y en configuración el Seam 2.1 y "Next >"
Nos saltamos las dos siguientes con "Next >"

En Seam Runtime le añadimos el seam que nos daron que hemos copiado en el workspace (jboss-seam-2.1.1.GA)
Seleccionamos el despliege de tipo EAR = EJB
Seleccionamos la base de datos y le añadimos un nuevo perfil de conexión. A la altura de los "Drivers" pulsamos el botón "New Driver definition". En Name/Type seleccionamos el mysql versión 5 y en el jar lo borramos y buscamos el que tiene el JBoss (el servidor) en default/lib y al aceptar le decimos que base de datos acceder su contraseña y demás.
Después de terminar el perfil de conexión marcamos la 2ª casilla que recree la base de datos.
Cambiamos el nombre de los paquetes que queden de tal manera "es.cea.seamcea.session", "es.cea...."
Y ya estará.

Se crearán 4 proyectos que son en realidad el mismo. El proyecto principal ya se autopublicará en el servidor JBoss y para que a la hora de que se publiquen cualquier cambio que hagamos hacemos doble click en el servidor y en "publishing" le decimos que revise si hay cambios a cada segundo.

Dentro del proyecto "seamcea-ejb" en el sourceFolder ejbModule en el paquete que tiene le damos boton derecho, Seam Action y creamos una nueva acción "miAccion" de método "saluda" y de página "bienvenida".
Con esto se creará de forma automática una acción con su bean y un xhtml que muestra una página de bienvenida con un botón que muestra una cadena al pulsar.
Para practicar un poquito duplicamos el método de "saluda()" y lo renombramos a "despedida()" tanto en la implementación (MiAccionBean) como en la interfaz (MiAccion) y añadimos un nuevo CommandButton en "bienvenida.xhtml"

De ahora en adelante una acción es una clase sin estado "Stateless". Nos crea una interfaz local con un EJB y su página.
Una clase con estado (Statefull) se le llama conversación.

En el proyecto "seamcea-ejb" creamos una nueva conversación y lo llamamos contador. Con esto hará lo mismo que antes pero hay que comenzar incrementar lo que se quiera y terminar.

El servidor jboss se encarga de mantener vivo un componente con estado para que cada usuario tenga el suyo mientras que uno sin estado lo crea y destruye. Los con estado ya son serializables.

Una clase con estado debe de ser serializable, con la anotación Destroy y Remove.
Existen varios estados: De Evento, de página, de conversación y de sesión.
Estos estados se pueden especificar con la anotación "@Scope(ScopeType.X)"

Borramos la librería de discografica-hibernate de la carpeta "deploy" del JBoss y copiamos el paquete "com.enjava.discografica.model" al source folder del proyecto ejb del que estamos trabajando.
Borramos las líneas de las propiedades de catalogo y de esquema en persistence.xml y realizamos un full publish.

Ejercicio:
El objetivo del ejercicio es hacer lo mismo de antes, crear un bean con una acción y una página, pero en vez de forma automatizada, hacerlo de forma manual.
Pasos:
  • Crear la interfaz con las cabeceras de los métodos. No nos olvidemos de los métodos "begin", "end" y "destroy" con las anotaciones @Begin, @End y "@Destroy @Remove" que son esenciales (sobre todo el último método) para el funcionamiento de todo.
  • Implementar la interfaz. Crear un método "increment" que incremente un valor y mediante un query que consulte un nombre dado en la tabla cantantes.
  • Crear la página .xhtml mostrando los datos.


No hay comentarios:

Publicar un comentario