Почему мы должны сделать поток SessionScoped ManagedBean безопасным в JSF? - PullRequest
7 голосов
/ 15 мая 2011

Я знаю, что Application-Scope сохраняется у нескольких пользователей, поэтому очевидно, что мы должны убедиться, что все ApplicationScoped ManagedBeans являются поточно-ориентированными.

Я также понимаю, что нам не нужно заботиться о потокебезопасность для RequestScoped ManagedBean.Это потому, что он длится только для одного HTTP-запроса и создается заново для каждого запроса, если на него есть ссылка.

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

Итак, почему мы должны беспокоиться о безопасности потоков в случае SessionScoped ManagedBeand, и относится ли это кViewScoped ManagedBean тоже?ViewScope сохраняется в течение 2 последовательных запросов для одного и того же представления, верно?

1 Ответ

8 голосов
/ 16 мая 2011

Если вы уже беспокоитесь о безопасности потоков данных в определенной области, то данные, скорее всего, относятся к более узкой области (т. Е. Имеется недостаток в проекте верхнего уровня).Если данные помещены в правильную область, тогда нет абсолютно никаких причин беспокоиться о безопасности потоков.Я предполагаю, что ваши bean-компоненты спроектированы правильно, так как они не выполняют никакой бизнес-логики в getters .

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

...