Seleccionar página

Cuándo se crean y destruyen las conversaciones

por | Feb 6, 2008 | Seam

En Seam podríamos definir una conversación como la unidad de trabajo desde el punto de vista del usuario.
La noción de Seam de conversación es el conjunto de tres ideas:

  • La idea de workspace. Cada usuario de la aplicación debe tener su propio espacio de trabajo, sin interferir en la actividad del resto de usuarios.
  • La idea de transacción. La mayoría de los frameworks están construidos siguiendo una arquitectura sin estado, incapaz de manejar correctamente los contextos de persistencia extendidos, dando lugar a fallos como la famosa LazyLoadException.
  • La idea de tarea en un workflow.

Uniendo y respetando estos tres conceptos, obtenemos el modelo conversacional de Seam, que nos
permite construir aplicaciones eficientes más rápidamente.
Este modelo sigue las siguientes reglas para crear o destruir el contexto de conversación:

  • Siempre hay una conversación activa durante la petición, el proceso de validación, la actualización de los modelos de datos, la invocación de la aplicación o la respuesta del ciclo de vida de JSF.
  • Con cada petición JSF, Seam intenta restaurar una ”conversación larga” (longrunning conversation) que existiese previamente. Si no la encuentra crea una conversación nueva.
  • Cuando se encuentra una anotación @Begin en un método que se ejecute, la conversación activa se promociona a conversación larga.
  • Cuando se encuentra una anotación @End en un método que se ejecute, cualquier conversación larga se degrada a conversación normal.
  • Tras cada respuesta JSF, Seam almacena los contenidos de la conversación larga si existe, y si no destruye el contenido de la conversación normal.
  • Cualquier petición JSF propaga el contexto de conversación, y por defecto las peticiones normales no lo propagan.
  • Si una petición JSF es re-dirigida, Seam almacena y restaura posteriormente la conversación para preservar su contenido.

Te puede interesar…

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *