gpt4 book ai didi

java - 有状态 EJB 与 session 属性

转载 作者:行者123 更新时间:2023-11-30 11:14:12 24 4
gpt4 key购买 nike

使用有状态 EJB 时,如果客户端没有 Activity session ,服务器如何知道 EJB 与谁相关联?我以前使用过无状态 EJB,但现在正在尝试学习如何使用有状态 EJB。我正在考虑将我的购物车实现为有状态 EJB,而不是将 POJO 购物车作为属性添加到用户 session 中。但是由于有状态 EJB 没有作为属性显式添加到 HttpSession 中,服务器如何将客户端与有状态 EJB 相关联?

最佳答案

从技术上讲,EJB 不需要访问客户端的 JSESSION_ID,因为与任何基本 pojo 一样,只要调用客户端处于 Activity 状态,它就处于 Activity 状态并且可用。一旦调用客户端被销毁或以其他方式放弃对 SFSB 的控制,bean 可能会被钝化或销毁(因此“忘记”对话)

来自 the Oracle JavaEE-6 tutorial

The state is retained for the duration of the client/bean session. If the client removes the bean, the session ends and the state disappears. This transient nature of the state is not a problem, however, because when the conversation between the client and the bean ends, there is no need to retain the state

将其视为在 has-a 关系中获取常规 java 对象的方式:一旦将组合对象设置为 null,就基本上结束了与该对象的对话。这同样适用于这里(某种程度上)。客户端不需要将特定的 session 信息传递给 EJB。 EJB 的正常生命周期和注释(特别是 @Remove)负责处理其他所有事情。

关于 SFSB 的警告:它们是重量级的,并且比 SLSB 更耐用。不要使用它们,除非您真的需要全面的 EJB 装饰。在许多情况下,一个普通的 HttpSession 和一个 SLSB 就足够了。

延伸阅读

关于java - 有状态 EJB 与 session 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26046937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com