lunes, 30 de junio de 2014

Cómo funciona un session bean

Resumen: En este artículo vamos a ver cómo se ejecuta un session bean, observando su paso por el constructor.
En el artículo anterior (
) observamos que para un request bean, se pasaba por el constructor cada vez que se entraba en una página, o mejor dicho, que se entraba en el ciclo de ejecución o de generación de la página.

Nota: Puedes descargar el ejemplo (para 10g) en el siguiente enlace

Vamos a tomar el ejemplo anterior, y cambiamos el bean que era inicialmente de tipo Request a Session Bean.
Para ello modificamos desde el faces-config visualmente, aunque también lo podemos hacer a través de un editor.

vista faces-config
vista faces-config

cambio de Scope (ámbito)
cambio de Scope (ámbito)


Al modificarse el faces-config.xml, es recomendable hacer un " Rebuild" previo a una ejecución.
La razón, es que la ejecución toma ciertos cambios en la aplicación, pero no todos, mientra que un "rebuild" toma el proyecto y reconstruye la información interna que necesita para poder ejecutar la aplicación.
Es por esta razón, que en ocasiones, realizamos modificaciones, y la aplicaciones parece no darse cuenta de los cambios.

El "rebuild" se hace sobre la aplicación entera (Ejemplo01) o bien sobre un proyecto (Model o ViewController).

Tras hacer el "rebuild" ejecutamos la aplicación, y observamos el resutlado.

vista navegador
vista resultado en el navegador

mensajes durante ejecucion
mensajes durante ejecución

Como podemos ver aparentemente son similares los comportamientos.
Si pulsamos (F5 o Ctrol + R) y observamos la consola de mensajes, podemos ver que sólo tenemos una línea indicando que se ha pasado por el constructor.
La razón de esto, es que al ser un session bean, sólo se ejecuta el constructor una sóla vez durante esa sesión, que aunque refresquemos la página o nos vayamos a otra página de la aplicación, la instancia vigente será siempre la misma.

Esta diferencia es importante saberla, a la hora de guardar datos de la aplicación.
Por ejemplo, en una página que ejecute un proceso que tiene varios pasos (proceso de darse de alta en una aplicación, matriculación en un centro, asistente por pasos online etc), es importante saber en qué lugar colocar la información que se va recogiendo. Habrá alguna que sea propia de cada paso, y que podría estar en un bean de tipo request, pero otros datos, que son necesarios mantener hasta el final del proceso, sería entonces adecuado tenerla en un session bean.

Artículos relacionados:
-

-
-


Si te ha gustado este artículo, puedes seguir el blog por Blogger o Twitter

No hay comentarios:

Publicar un comentario