【发布时间】:2011-04-07 11:07:15
【问题描述】:
我正在开发一个使用 JSF 和购物车样式流程的 Java EE Web 应用程序,因此我想收集多个页面上的用户输入,然后对其进行处理。
我正在考虑为此使用 EJB 3 有状态会话 bean,但我的研究使我相信 SFSB 不绑定到客户端的 http 会话,因此我必须通过 httpSession 手动跟踪它,这里有一些附带问题。 . .
1)为什么叫session bean,据我看和session没有关系,我可以通过在session中存储一个pojo来实现。
2) 能够注入它有什么意义,如果我要注入的只是这个 SFSB 的一个新实例,那么我还不如使用 pojo?
回到我看到的主要问题,JSF 是一种表示技术,所以它不应该用于逻辑,但它似乎是收集用户输入的完美选择。
我可以将 JSF 会话范围 bean 设置为我所有请求 bean 的托管属性,这意味着它被注入到它们中,但与 SFSB 不同的是,JSF 托管会话范围 bean 绑定到 http 会话,因此同一个实例是只要 http 会话没有失效,就会一直注入。
所以我有多层
第 1 层)JSF 管理的请求范围 bean,用于处理表示,每页 1 个。
第二层)一个 JSF 管理的会话范围 bean,其值由请求 bean 在其中设置。
第三层)一个无状态会话 EJB,它对 JSF 会话范围 bean 中的数据执行逻辑。
为什么会这么糟糕?
另一种选择是使用 SFSB,但我必须将其注入到我的初始请求 bean 中,然后将其存储在 http 会话中并在每个后续请求 bean 中重新获取它 - 看起来很混乱。
或者我可以将所有内容都存储在会话中,但这并不理想,因为它涉及使用文字键和强制转换。等..等容易出错。 . .又乱又乱!
任何想法都值得赞赏,我觉得我是在与这项技术作斗争,而不是在使用它。
谢谢
【问题讨论】:
标签: jsf jakarta-ee ejb stateful stateful-session-bean