1

任何人都可以从并发的角度帮助我理解 JSF 托管 bean 范围吗?

我的理解:

一旦我在会话范围内有一个 bean,这意味着:只有一个用户可以访问这个托管 bean,因此不可能发生并发。

此外,一旦我在请求范围内使用了 bean,那么一旦发起请求,就会创建这个 bean,一旦返回响应,就会删除该 bean。(每个客户都有这个 bean 的不同副本)

此外,一旦我在无范围内使用 bean,一旦用户调用 bean,它将被创建,完成调用后,bean 将被删除。

但是一旦我在应用程序范围内有一个 bean,这意味着多个客户端可以访问这个 bean,所以如果我有一个关键数据,它必须通过同步来保护。

非常感谢您的所有意见。

4

1 回答 1

4

我认为您对每个示波器的使用寿命的理解都很好。

但是,我认为您对何时应用同步的理解并不好。每当您需要在某个范围内同步 bean 的方法时,这通常表明 bean 的范围对于它所保存的数据来说太宽了。然后,您应该将 bean 放在更窄的范围内,或者将数据移动到更窄范围内的另一个 bean 中,这样就不需要同步了。

您应该将请求范围的数据(表示数据、同步表单数据等)放在请求范围内。您应该将视图范围的数据(异步表单数据、rendered属性条件、“隐藏”值等)放在视图范围中。您应该将会话范围内的数据(登录用户、用户首选项、用户特定数据等)放在会话范围内。您应该将应用程序范围的数据(全局下拉列表值、配置设置等)放在应用程序范围内。

于 2011-08-11T13:00:29.560 回答