使用有状态EJB时,如果客户端没有活动会话,服务器如何知道EJB与谁关联?我以前使用过无状态的EJB,但现在正在尝试学习如何使用有状态的EJB。我正在考虑将我的购物车作为一个有状态的EJB来实现,而不是将POJO Cart作为用户会话中的一个属性添加。但是由于有状态的EJB没有明确地作为HttpSession中的一个属性添加,所以服务器如何将客户端与有状态的EJB相关联?有状态EJB与会话属性
2
A
回答
1
EJB在技术上并不需要需要才能访问客户端的JSESSION_ID,因为就像任何基本的POJO一样,只要呼叫客户端处于活动状态,它就是活的且可用的。一旦调用客户端被破坏或以其它方式放弃对SFSB的控制下,豆易于被钝化或破坏(并且因此“忘记”谈话)
的状态被保持为客户端/ bean会话的持续时间。如果 客户端删除该bean,则会话结束并且状态 消失。这种状态的短暂性不是问题, 然而,因为当客户端和bean 两端之间的对话,就没有必要保留状态
想起来了,你弄个同样的方式一个普通java对象的关系:一旦你将组合对象设置为null,你基本上已经结束了与该对象的对话。这里同样适用(有点)。客户端不需要将特定的会话信息传递给EJB。 EJB的正常生命周期和注释(特别是@Remove
)会照顾其他所有内容。
有关SFSB的警告:它们是重量级的,它们比SLSB持续时间更长。除非您确实需要全面的EJB标记,否则不要使用它们。在很多情况下,一个普通的HttpSession和一个SLSB就足够了。
进一步阅读
+0
注意事项不一定是正确的。有些模式可以与SFSB一起使用,让您可以扩展应用程序以避免由SLSB引发的锅炉代码和贫血模型。除非您真的拥有*许多*用户,否则Oracle文档称不会过度使用SLSB – Sergio 2014-09-27 13:18:38
相关问题
- 1. EJB无状态会话bean和有状态会话bean
- 2. EJB 3.1丢弃有状态会话bean
- 3. EJB 2.1有状态会话bean
- 4. EJB访问有状态会话Bean NameNotFoundException
- 5. AVAssetWriter多个会话和状态属性
- 6. 如何使用JPA映射有状态的ejb 3.1会话bean
- 7. 有状态会话EJB的真实世界用例
- 8. 会话状态
- 9. 会话状态
- 10. EJB Spec 3.1有状态转换状态
- 11. '没有会话或会话关闭' 与JPA 2和EJB 3.1
- 12. 有状态EJB的问题 - 为所有用户保留一个会话
- 13. ASP.NET会话状态的性能基准
- 14. 了解EJB中无状态企业会话Bean的功能
- 15. 用“纯”类覆盖EJB 3无状态会话bean的方法
- 16. 独立EJB客户端本地无状态会话bean查找
- 17. EJB中的帮助创建无状态会话Bean
- 18. 无状态会话中的事务回滚EJB 3.0
- 19. EJB无状态会话Bean - 无法创建错误
- 20. ASP.NET会话状态
- 21. 会话状态MVC3
- 22. asp.net会话状态
- 23. ASP.Net会话状态
- 24. 使用用SpringMVC HTTP @ExceptionHandler状态500 - 预期会话属性
- 25. Java EE 6 - 作为有状态会话bean的有状态REST
- 26. Java EE 6:如何从无状态会话Bean调用有状态会话Bean?
- 27. EJB - 序列化错误,而这样做的有状态会话bean
- 28. 有状态的EJB和同一会话在客户端之间被复制
- 29. EJB 3.1的多个实例无接口Singleton /有状态会话Bean
- 30. 我如何在ejb中设置和获取会话属性
服务器无法与客户端的会话,除非它已被添加(或使用了'@ Inject'和有状态会话bean是'@关联SessionScoped')。什么让你觉得它是? – 2014-09-26 03:31:06
我认为,在有状态EJB的情况下,当我在有状态EJB中发出请求来运行一个方法时,同一个bean正在为一个客户端提供服务,所以我不确定bean和那个1客户端之间的连接是什么。 – user1154644 2014-09-26 20:16:02
有状态会话bean在客户端执行查找时创建。从查找返回的代理包含某种特定的bean实例的引用/ ID,因此当客户端在代理上进行后续调用时,它将连接回特定的bean实例。 – 2014-09-26 23:05:47