Интересно, что происходит с введенным EJB-прокси, когда компонент SessionScoped CDI был пассивирован, а затем активирован. Есть ли null ref? Или EJB «повторно закачивается»? Спасибо за разъяснение.Внедрение безстоящего EJB в SessionScoped CDI Bean
ответ
Раздел 6.6.3. (Зависимые от пассивации) спецификации CDI заявляют, что контейнер гарантирует, что Faceless beans - это пассивация, способная ли вы объявлять свой факсимильный компонент без сепарирования или нет.
В разделе 6.6.5 спецификаций указано, что при развертывании возникает ошибка, если пассивирующая область (например, «@SessionScoped») объявляет зависимость от зависимостей, не связанных с пассивацией.
Как контейнер обрабатывает реактивацию, зависит от реализации. Он может сделать сериализуемым bean-файл без имени, или сериализуемый прокси-сервер, и ссылку на bean-компонент, когда прокси-сервер десериализуется.
Добавление к ответу maress; поскольку компонент Faceless для клиента на самом деле является без гражданства, контейнер необязательно должен сериализовать что-либо для него.
Каждый другой вызов фаната без состояния может в любом случае перейти в другой экземпляр компонента или любой другой вызов может вызвать создание нового экземпляра bean-объекта (что является поведением по умолчанию в WildFly 8, если я не ошибаюсь).
Как упоминалось выше, технически прокси-сервер может быть сериализуемым, но прокси-сервер обычно делает немного больше, чем выборка фактического компонента * из системного пула (который может быть нулевого размера) и делегировать все вызовы методов на это.
*) В качестве технической детали; прокси-сервер не может напрямую ссылаться на фактический компонент, но вызывать цепочку перехватчиков до фактического фактического компонента, называемого
- 1. Inject @SessionScoped CDI Bean для @Stateless EJB
- 2. Помощь в EJB Создание безстоящего сеанса Bean
- 3. Inject HttpServletRequest в CDI SessionScoped bean
- 4. Использование CDI @SessionScoped bean из WebSocket @ServerEndpoint
- 5. Не удается ввести CDI @SessionScoped в HttpSessionListener
- 6. Java EE впрыснуть CDI @SessionScoped в EJB @Stateless сессионный компонент
- 7. @PostConstruct, вызываемый перед другим SessionScoped Bean, обновленным в JSF2/CDI?
- 8. CDI SessionScoped Bean приводит к двум экземплярам в одном сеансе
- 9. Injecting EJB Bean с использованием CDI
- 10. Как уничтожить объект SessionScoped bean
- 11. Нелинзивный экземпляр CDI SessionScoped beans
- 12. @SessionScoped CDI bean - это другой экземпляр при инъекции
- 13. Доступ к @SessionScoped bean из @WebService аннотированный EJB
- 14. CDI SessionScoped POJO внутри встроенного теста JUnit
- 15. Использование JAX-WS WebService из безстоящего EJB
- 16. Расширение @Named @SessionScoped bean
- 17. Stateless CDI Managed bean
- 18. ManagedProperty в CDI @Named bean возвращает null
- 19. CDI Событие, выпущенное из MDB, не должно быть уловлено в SessionScoped bean
- 20. EJB bean или plain Managed Bean?
- 21. Возвращение ссылки на CDI bean в вызове EJB
- 22. Внедрение stateful ejb в сервлет
- 23. Создать SessionScoped версию ApplicationScoped bean
- 24. JSF - Получить экземпляр SessionScoped Bean
- 25. Ссылка на CDI Bean в неуправляемом CDI Bean
- 26. Служба планировщика EJB безстоящего пользователя vs singleton
- 27. CDI bean-производитель внутри EJB-сессии без состояния
- 28. CDI bean in JAVA EE
- 29. Данные кажутся vansih между EJB и CDI bean
- 30. Получить доступ к CDI bean из другого CDI bean
> Ссылка на bean-компонент, когда прокси-сервер десериализуется, обновляется' - я не исследовал каждый другой прокси-сервер для реализации EJB, но концептуально я не думаю, что прокси-сервер содержит ссылку на фактический bean-компонент без состояния, но просто код для извлечения из пула. А именно, каждый другой вызов одного и того же прокси-сервера может перейти к другому экземпляру компонента, поэтому для прокси-сервера не будет смысла сохранять ссылку на конкретный экземпляр. –