En el artículo anterior (Cómo funciona un bean request) 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 Descargar
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 |
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 resultado en el navegador |
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:
- Cómo funciona un bean request
- Beans scope - Ámbitos de los beans
- Mostrar un valor de un bean
Si te ha gustado este artículo, puedes seguir el blog por Blogger o Twitter @ADFSalvaje
No hay comentarios:
Publicar un comentario