Помогите мне понять область действия управляемого компонента JSF с точки зрения параллелизма

Может ли кто-нибудь помочь мне понять область действия управляемого JSF-компонента с точки зрения параллелизма?

Мое понимание:

Как только у меня есть область действия bean-объекта в области действия сеанса, это означает: только один пользователь может получить доступ к этому управляемому bean-компоненту, поэтому нет возможности возникновения параллелизма.

Кроме того, как только я использую bean-компонент в области запроса, этот bean-компонент будет создан после инициации запроса, и этот bean-компонент будет удален после возврата ответа. (у каждого клиента есть разные копии этого компонента)

Кроме того, как только я использую bean-компонент в области действия none, когда пользователь вызовет bean-компонент, он будет создан, и после завершения вызова bean-компонент будет удален.

Но как только у меня есть компонент в области приложения, это означает, что несколько клиентов могут получить доступ к этому компоненту, поэтому, если у меня есть критические данные, они должны быть защищены синхронизацией.

Все ваши отзывы высоко ценятся.

1 ответ

Решение

Я думаю, что вы понимаете продолжительность жизни каждой из областей в порядке.

Тем не менее, я думаю, что ваше понимание того, когда применять синхронизацию, не очень хорошо. Всякий раз, когда вам необходимо синхронизировать методы bean-компонента в определенной области, это обычно указывает на то, что область действия bean-компонента слишком широка для данных, которые он содержит. Затем вы должны поместить компонент в более узкую область или переместить данные в другой компонент в более узкую область, так что синхронизация не требуется.

Вы должны поместить данные области запроса (данные представления, данные синхронной формы и т. Д.) В область запроса. Вы должны поместить данные области видимости (асинхронные данные формы, rendered условия атрибута, "скрытые" значения и т. д.) в области просмотра. Вы должны поместить данные области сеанса (зарегистрированный пользователь, пользовательские настройки, пользовательские данные и т. Д.) В область сеанса. Вы должны поместить данные области приложения (значения глобального выпадающего списка, параметры конфигурации и т. Д.) В область приложения.

Другие вопросы по тегам