为什么我们要在JSF中使SessionScoped ManagedBean线程安全?

Bhe*_*ung 7 jsf thread-safety session-scope managed-bean

我知道Application-Scope持久存在于多个用户之间,因此我们应该确保所有ApplicationScoped ManagedBeans都是线程安全的.

我也明白,我们不需要关心RequestScoped ManagedBean的线程安全性.这是因为它仅针对一个HTTP请求而持续,并且如果被引用则针对每个请求进行新实例化.

但我不太清楚为什么我们应该担心SessionScoped ManangedBean的线程安全性.即使它在多个请求中持续存在,每个用户都可以获得自己的实例,对吧?

那么,为什么我们需要在SessionScoped ManagedBeand的情况下担心线程安全,这也适用于ViewScoped ManagedBean吗?ViewScope在同一视图的两个连续请求中持续存在,对吧?

Bal*_*usC 8

如果您已经在某个范围内担心数据的安全性,那么数据很可能属于更窄的范围(即高级设计存在缺陷).如果数据放在合适的范围内,那么完全没有理由担心线程安全.我假设你的bean设计正确,他们没有在getter中做任何业务逻辑.

将应用程序范围用于应用程序范围的数据/常量,例如每个人都相同的下拉列表.将会话范围用于客户端特定数据,例如登录用户和用户首选项(语言等).将视图范围用于富启用Ajax的动态视图(基于ajax的验证,渲染等).将请求范围用于简单和非ajax表单/演示文稿.