Seleccionar página

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ó 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 de más ráidamente.
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 anotacion @Begin en un méodo que se ejecute, la conversación activa se promociona a conversación larga.
  • Cuando se encuentra una anotacion @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 redirigida, Seam almacena y restaura posteriormente la conversación para preservar su contenido.
Share