gpt4 book ai didi

java - 有状态 session Bean 和 HTTP session

转载 作者:搜寻专家 更新时间:2023-11-01 02:48:14 26 4
gpt4 key购买 nike

有状态 session bean 和 HTTP session 之间有什么关系吗?我们需要有状态 session bean 的用例是什么?什么用例需要 HTTP session 。我可以将有状态 session bean 公开为 Restful Web 服务吗?

最佳答案

HTTP 是一种无状态协议(protocol)这意味着它是服务器和客户端之间的实际传输协议(protocol)——是“无状态因为它不会记住调用之间的任何内容
现在首先阅读什么是 HTTPSession 和什么是 Session Bean(请记住, session bean 用于跨多个请求维护数据状态,因此大多数 session bean 是有状态 session bean,因为它在整个 session 中保存数据)

HTTP session
HttpSession 对象可以保存来自同一客户端的多个请求的 session 状态。换句话说,它会在与特定客户端的整个 session 中持续存在。我们可以使用它来存储在 session 期间客户端发出的所有请求中我们从客户端返回的所有内容。
session Bean 来自 wiki
在 Java Platform, Enterprise Edition 规范中,Session Bean 是 Enterprise Bean 的一种。 session Bean 为客户端执行计算或数据库访问等操作。虽然 session bean 可以是事务性的,但如果发生系统崩溃,它是不可恢复的。 session bean 对象可以是无状态的,也可以跨方法和事务维护 session 状态。如果 session bean 维护状态,那么当对象必须从内存中移除时,EJB 容器会管理该状态。然而, session bean 对象本身必须管理它自己的持久数据。

简单来说
session 跟踪是在网站访问者从一个页面移动到另一个页面时维护信息或状态的过程。它需要 Web 开发人员做一些工作,因为它没有内置机制。从浏览器到 Web 服务器的连接是通过无状态超文本传输​​协议(protocol) (HTTP) 进行的
AND
SFSB 设计用于通过多次调用同一 session bean(即对话)来管理客户端状态。如果您查看 JBoss Seam,您会发现 SFSB 大量用于对话上下文。
在 EJB3 中,没有“无状态优于有状态 session bean”这样的说法。例如,一个提供信用卡处理器之类的服务(无状态),一个提供多屏向导用例的处理(有状态)。

在我看来管理使用 HttpSession 和无状态 session bean 的状态是非常困难和有问题的。

编辑: HTTPSession 用于像用户 session 一样保持 session 跟踪
例如,您想创建一个登录、注销机制,那么您必须需要 HTTPSession,因为当用户将开始在两者之间导航时不同的页面,那么这个 HTTPsession 会记住 WHO 正在请求这些页面,否则这是不可能的(因为 HTTP 是一个无状态协议(protocol))
现在在 session 中你只需设置用户名和密码的 session 并且你正在检查每个页面如果这个 session 存在然后显示页面

现在如果,你必须在多个请求中发送这个用户的大量信息怎么办?在这种情况下,您将在有状态 session bean 中设置所有这些信息
但现在,在现代框架 session 以及信息中,所有内容都存储在 session bean 中,因为从 session bean 可以很容易地管理它们。
当我们纯粹使用 Servlet 和某种 JSP 技术时,使用了 HTTPSession

关于java - 有状态 session Bean 和 HTTP session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17227813/

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