Безопаснее ли вводить bean-объект EVENT в bean-объект CONVERSATION / SESSION? - PullRequest
2 голосов
/ 14 июля 2011

Безопасно ли вводить бобы из более узкой области в боб с широкой областью действия?

Заботится ли об этом Seam CDI для определения текущего контекста EVENT / REQUEST / PAGE для правильного внедрения в bean-компонент SESSION / CONVERSATION.

Моя точка зрения такова. Я не хочу, чтобы одна страница / даже объекты смешивались с данными другой страницы / события.

Я всегда могу использовать Component.getInstance () в методе, чтобы в любом случае убедиться, что я получаю компоненты текущего события / страницы. Но я бы хотел использовать @ In (scope = ScopeType.EVENT) даже для этого.

1 Ответ

1 голос
/ 14 июля 2011

Сеанс и компоненты области страницы синхронизируются по умолчанию.Следовательно, должно быть безопасно вводить компонент с областью события, такой как EntityManager, в них.Поскольку он синхронизирован, два запроса не будут мешать двум различным внедренным объектам.

Чтобы быть полностью уверенным, что вы не столкнетесь с проблемами параллелизма, я рекомендую вам не внедрять эти компоненты, а выбиратьих из репозитория компонентов:

MyComponent myComponent = (MyComponent) Component.getInstance("myComponent");
...