2011-06-16 42 views
8

我發現JSF 2.0 Flash範圍是通過cookie在Mojarra 2.x中實現的。看起來會發生的是,當使用Flash從瀏覽器A導航到瀏覽器B時,JSF發送重定向響應。這與包含set-cookie標頭的響應相同。Flash範圍是否存在競態條件?

由於Cookie對於瀏覽器是全球性的,我不知道這會導致競爭狀況的可能性。由於Cookie是在重定向響應期間設置的,我試圖找出HTTP規範是否能夠保證瀏覽器在響應中發出的請求始終是第一個使用此cookie的請求。

然而,通常情況下,如果第一個請求以某種方式停止(因爲互聯網決定將這個特定的請求路由到世界的一半),然後來自另一個選項卡的第二個請求到達服務器第一。

在兩頁之間使用閃光燈作用域不是一個可怕的想法,還是我忽略了某些內容,它是否完全安全?

+0

沒有答案,但這一個是有點相關:http://stackoverflow.com/questions/3343147/removing-jsf-messages-from-the-flash/6404047 – 2011-06-19 19:17:38

+0

OP沒有給出詳細信息,但在這裏有人抱怨閃光範圍不工作:http://stackoverflow.com/questions/6398308/jsf-mojarra-flash-scope-problems – akira 2011-06-20 09:54:34

回答

2

如果有資源,比如文件或cookie,肯定會有機會成爲競爭條件。但你應該調查,如何避免它。

我認爲答案是完美的保存是EJB 3.0 我們使用EJB 3.0是因爲事務安全。 以同樣的方式,我們將請求傳遞給EJB以將數據插入數據庫,您可以使用EJB作爲協調者與您的Flash作用域進行交互。這樣你的交易就會得到保障,這意味着你將獲得無競爭的風險。

+0

嗯......這將阻止兩個請求做同樣的事情。但我認爲在這種情況下,這是關於發送cookie的錯誤請求,即錯誤的窗口或選項卡。 EJB3無論多麼偉大,都無法幫到那裏。 – 2011-06-26 11:03:40