jsf - 为什么我们应该在 JSF 中使 SessionScoped ManagedBean 线程安全?

标签 jsf thread-safety managed-bean session-scope

我知道 Application-Scope 在多个用户之间持续存在,所以很明显我们应该确保所有 ApplicationScoped ManagedBeans 都是线程安全的。

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

但是我不太确定为什么我们应该担心 SessionScoped ManangedBean 的线程安全。即使它在多个请求中持续存在,每个用户都会得到他/她自己的实例,对吗?

那么,为什么我们需要担心 SessionScoped ManagedBeand 的线程安全性,这是否也适用于 ViewScoped ManagedBean? ViewScope 在同一 View 的 2 个连续请求中持续存在,对吗?

最佳答案

如果您已经担心某个范围内数据的线程安全性,那么该数据很可能属于更窄的范围(即高层设计存在缺陷)。如果数据放在正确的范围内,那么完全没有理由担心线程安全。我假设您的 bean 的设计方式是正确的,它们在 getters 中没有执行任何业务逻辑。 .

将应用范围用于应用范围的数据/常量,例如对每个人都相同的下拉列表。将 session 范围用于客户端特定数据,例如登录用户和用户首选项(语言等)。将 View 范围用于支持丰富的 ajax 动态 View (基于 ajax 的验证、渲染等)。将请求范围用于简单和非 ajax 表单/演示文稿。

关于jsf - 为什么我们应该在 JSF 中使 SessionScoped ManagedBean 线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6010164/

相关文章:

java - 查看 mojarra 上的过期问题

multithreading - Boost Asio是否按顺序调用异步处理程序

c++ - 如何避免线程+优化器==无限循环?

javascript - 如何在 JavaScript 中触发隐藏的 JSF commandLink?

java - 未在 @RequestScoped ManagedBean 中获取请求参数

security - JSF 2.0 如何防止 CSRF

javascript - 使用 JSF 1.1 从 WAS 6.1 迁移到 8.5

jquery - 使用 jquery ajax 调用 jsf 托管 bean 方法(AjaxBehaviorEvent 监听器处理程序)

jsf - Primefaces RequestContext scrollTo 不起作用

rust - 编译器表示数据不能在线程之间安全共享,即使数据被包裹在互斥体中