«Правильный экземпляр» - вводящая в заблуждение формулировка.
Что происходит так:
-
SessionService
вызывается (возможно, вызвано веб-запросом). - Если запускается
LoggedInEvent
, все зарегистрированные наблюдатели вызываются синхронно (это означает, что SessionService
не завершится до завершения всех наблюдателей). - Каждый компонент, содержащий (не-static) метод наблюдателя будет создан (при условии, что область действия компонента активна - как правило, в стандартной веб-среде (*)).Это будет случай для вашего
SessionBean
.Если - и только если - SessionBean
уже был создан в вашем активном сеансе (безусловно, только один сеанс активен в отношении веб-запроса), то этот экземпляр, конечно, будет использоваться.
Подробнее в spec .
Итак, чтобы ответить на ваш вопрос:
Да, будет вызван правильный экземпляр.Зачем?Поскольку контейнер обязан убедиться, что только один SessionBean
-экземпляр связан с активной областью сеанса.
(*): если вызов, например, инициируется удаленным вызовом ejb, выне может ни принять активный сеанс, ни активный разговор ...