Насколько мы должны быть обеспокоены безопасностью потоков с управляемыми компонентами JSF? - PullRequest
2 голосов
/ 10 января 2011

Я работаю над проектом JSF 1.2, который имеет функциональность AJAX на своих страницах (используя RichFaces).

Мой bean-компонент создает список объектов, подлежащих редактированию, а затем имеет методы для поддержки редактирования, и bean-компонент определяется областью сеанса. Я буду использовать очередь a4j: так, чтобы за один раз мог произойти только один вызов AJAX.

Мне любопытно, разумно ли использовать синхронизацию (блокировки объектов или, возможно, коллекции из java.util.concurrent) в управляемом компоненте. Действительно ли необходима дополнительная работа для обеспечения синхронизации / безопасности потоков? На сайте, над которым я работаю, много пользователей, и он должен быть надежным, но на нем много управляемых bean-компонентов, и мне интересно, насколько я должен быть обеспокоен безопасностью потоков управляемых bean-компонентов в целом.

Вы делаете дополнительные шаги в поддержке бобов для обеспечения безопасности потоков?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 11 января 2011

Вы должны иметь в виду сферу.

Область запроса - потокобезопасный, область сеанса - не потокобезопасный

Если вам нужно иметь возможность открывать несколько окон или вкладок браузера, то вы можете использовать что-то вроде диалога Seam для защиты отредактирование одного и того же объекта из двух окон / вкладок.

1 голос
/ 11 января 2011

a4j: очередь не помешает пользователю перезагрузить страницу / щелкнуть другую ссылку, пока идет вызов AJAX.

Да, мы можем, вероятно, доверять пользователю, чтобы он не нажимал много разных ссылок сразу после друг друга, но как насчет запросов, не запускаемых пользователем, например, с помощью a4j: poll?

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

Тем не менее, в зависимости от степени надежности, которой должно соответствовать ваше приложение, эта проблема может или не может заслуживать вашего внимания.

0 голосов
/ 08 апреля 2015

Если это SessionScope d, вы должны позаботиться об использовании некоторых механизмов обеспечения безопасности потоков.Если это RequestScope d или ViewScope'd, то безопасно делить переменные класса между методами.

...