Внедрение компонента Statefull Bean внутрь компонента без состояния
При введении stateful session bean
внутри stateless session bean
с помощью DI
, что происходит точно: контейнер внедрил новый экземпляр statefull bean для каждого bean-компонента без состояния (который существует в пуле), или это один и тот же экземпляр, общий для них?
Почему указано, что с помощью JNDI
в этом случае лучше, чем DI?
Я действительно не понял этого:)
Спасибо:)
2 ответа
Для каждой сессии @Statefull будет новым экземпляром. @Statefull не является прямым экземпляром, это прокси и может быть изменен каждый раз, когда это необходимо, даже внутри @Stateless
По сути, не имеет смысла вставлять состояния с сохранением в состояние без состояния, потому что это состояние будет совместно использоваться многими клиентами, если они получат один и тот же экземпляр без состояния, или один клиент также может получить доступ к различным экземплярам с состоянием, если он получит доступ к различным экземплярам без состояния.
Использование JNDI или нет, не имеет никакого значения в этом случае. Состояние не может быть общим для многих клиентов, и каждый экземпляр statelss является отдельным клиентом. Если вы будете использовать JNDI, то в зависимости от того, где вы выполняете поиск, вы можете получить новый экземпляр с сохранением состояния при каждом вызове без сохранения состояния.
Любая причина, почему вы хотели бы вводить с сохранением состояния в безгражданстве?