我想知道当SessionScoped CDI bean被钝化并激活时,注入的EJB-Proxy会发生什么。有空引用吗?还是EJB“重新注入”?感谢您的澄清。在SessionScoped CDI Bean中注入无状态的EJB
1
A
回答
2
节6.6.3。 (钝化能力的依赖关系)CDI规范指出,无论您声明无状态bean是否可序列化,容器都保证无状态bean是钝化功能。
规范的第6.6.5节指出,如果钝化作用域(例如,'@SessionScoped')声明依赖于非钝化能力依赖关系,则会在部署时发生错误。
容器如何处理重新激活依赖于实现。当代理被反序列化时,它可以使无状态bean可序列化,或者可序列化的代理和对bean的引用。
2
添加到maress的答案;因为一个无状态bean实际上是无状态的客户端,所以容器不一定需要序列化任何东西。
对无状态bean的任何其他调用都可以转到不同的bean实例,或者其他任何调用都可以创建新的bean实例(如果我没有弄错,这是WildFly 8中的默认行为)。
正如Maress提到的那样,技术上可以使代理可序列化,但代理通常不会从系统范围池(可以为零大小)获取实际bean *并将所有方法调用委托给该代理。
*)作为技术细节;代理可能不会直接调用实际的bean,而是调用实际实际Bean之前的拦截器链。
相关问题
- 1. sessionscoped托管bean vs有状态ejb
- 2. Spring的EJB无状态bean
- 3. 从EJB @Asynchronous调用中访问CDI SessionScoped bean
- 4. 从无状态服务设置sessionScoped bean?
- 5. 在有状态EJB中注入无状态EJB不能按预期工作
- 6. 注入EJB到SessionScoped ManagedBean取消部署
- 7. EJB无状态会话bean和有状态会话bean
- 8. 无法在无状态EJB中注入JMS队列
- 9. 如何在ManagedBean中注入CDI Bean?
- 10. 无法注入CDI Bean休息Easy
- 11. CDI SessionScoped Bean会产生很多会话
- 12. @RequestScoped CDI注入到@MessageDriven bean
- 13. 无状态EJB与注入更大的EJB实例
- 14. 单身启动EJB内的本地无状态EJB注入
- 15. CDI,有状态会话bean,无状态会话bean,pojo和不同作用域之间的关系
- 16. “无法ejbRef转换为EJB” 关于CDI(焊接)注入@Stateless的EJB到Glassfish的
- 17. 启动EJB不注射时SessionScope CDI Bean的初始化
- 18. 在其他SessionScoped Bean在JSF2/CDI中更新之前调用@PostConstruct?
- 19. JSF托管bean EJB注入
- 20. 托管bean EJB注入
- 21. JAX-RS使用的无状态EJB中的@Context注入
- 22. 访问CDI SessionScoped bean在Java 8并行流中不起作用
- 23. CDI SessionScoped在容器内JUnit测试中的POJO
- 24. CDI注入EJB会导致NullPointerException
- 25. 如何将EJB注入抽象CDI类?
- 26. 如何为EJB方法设置超时(在无状态bean中)
- 27. 在EJB无状态bean中需要帮助
- 28. CDI中的PostConstruct SessionScoped托管的豆子
- 29. @从EJB项目注入bean给出UnsatisfiedResolutionException
- 30. Hibernate EntityManager没有注入到无状态EJB中
>当对代理进行反序列化时,对bean的引用被更新了 - 我还没有调查过每一个EJB实现代理,但从概念上讲,我不认为代理拥有对实际无状态bean的引用,而只是从池中获取它的代码。也就是说,对同一个代理的每个其他调用都可能会转到不同的bean实例,因此代理保留对特定实例的引用没有多大意义。 – 2014-09-13 10:05:32