Несколько экземпляров Sessionscoped Beans в одном сеансе - PullRequest
0 голосов
/ 11 октября 2018

Что произойдет, если в одном сеансе я создаю несколько экземпляров SessionScoped Bean или EJB (первый раз вводится через контейнер, а второй - через «новый»)?Будет ли это ошибка?Если нет, какой из них будет использоваться во время инъекции?То же самое и для AppllicationScoped и RequestScoped?!

PS Классы не имеют каких-либо комментариев, дают им явное имя.

1 Ответ

0 голосов
/ 15 октября 2018

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

В вашем случае объект, созданный с помощью new, просто не будет управляемым компонентом, и CDI не будет об этом знать (если только это не результаткакой-то метод продюсера или тому подобное).Вы должны выяснить, почему он вообще создается, а не просто вводить существующий?

То же самое и для AppllicationScoped и RequestScoped?!

Для каждой точки вводаКомпонент с нормальной областью действия CDI изучит базовое «хранилище компонентов» и выяснит, был ли созданный вами компонент уже создан и сохранен там.Если это так, он просто возвращает вам это (или, ну, прокси к нему).Если нет, он создаст новый и сохранит его там для будущих ссылок.

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

...