2011-06-16 7 views
8

Descubrí que el alcance del Flash JSF 2.0 se implementa en Mojarra 2.x a través de una cookie. Lo que parece suceder es que cuando navega desde la vista A para ver B usando The Flash, JSF envía una respuesta de redireccionamiento. Es esta misma respuesta la que contiene el encabezado set-cookie.¿El alcance de Flash está libre de condiciones de carrera?

Como las cookies son globales para el navegador, me pregunto qué posibilidades hay de que esto conduzca a una condición de carrera. Como la cookie se establece durante la respuesta de redirección, traté de encontrar si la especificación HTTP de alguna manera garantiza que la solicitud que emite el navegador en respuesta sea siempre la primera en utilizar esta cookie.

En general, puede haber un problema si esta primera solicitud se paraliza de alguna manera (dado que Internet decidió enrutar esa solicitud concreta a la mitad del mundo) y luego llega una segunda solicitud desde otra pestaña al servidor primero.

No es una cookie una idea terrible para usar con un alcance de flash entre dos páginas, o estoy pasando por alto algo y ¿es perfectamente seguro?

+0

No tengo una respuesta, pero este es algo relacionado: http://stackoverflow.com/questions/3343147/removing-jsf-messages-from-the-flash/6404047 –

+0

OP no proporciona detalles, pero aquí alguien se queja de que el alcance del flash no funciona: http://stackoverflow.com/questions/6398308/jsf-mojarra-flash-scope-problems – akira

Respuesta

2

Si hay un recurso, como un archivo o, cookie ... seguro, siempre habrá una posibilidad de ser una condición de carrera. Pero deberías investigar, cómo evitarlo.

Creo que la respuesta tenga que guardar perfectamente son EJB 3.0 Utilizamos EJB 3.0, porque son seguros transaccional. De la misma manera que pasamos una solicitud a un EJB para insertar datos en una base de datos, puede interactuar con su alcance de flash usando un EJB como negociador. De esa forma su transacción estará asegurada y eso significa que estará exento de riesgos de condición de carrera.

+0

Hmmm ... eso evitaría que dos solicitudes hagan lo mismo. Pero creo que en este caso se trata de la solicitud incorrecta que envía la cookie, es decir, la ventana o pestaña incorrecta. EJB3, no importa cuán grande sea, no puede ayudar allí. –

Cuestiones relacionadas