2011-06-16 51 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