有状态会话bean和HTTP会话之间是否存在任何关系? 我们需要有状态会话bean以及需要HTTP会话的用例有哪些用例。 我可以将有状态会话bean公开为一个宁静的Web服务吗?
答案 0 :(得分:4)
HTTP是一种无状态协议这意味着它是服务器和客户端之间的实际传输协议 - 是“无状态,因为它在调用之间没有记住任何内容
现在首先阅读这是什么是HTTPSession以及什么是会话Bean(请记住,会话bean用于维护跨多个请求的数据状态,因此大多数会话bean是有状态会话bean,因为它在整个会话中保存数据)
HTTP会话
HttpSession对象可以在来自同一客户端的多个请求中保持会话状态。换句话说,它与特定客户端的整个会话持续存在。
我们可以使用它来存储客户在会话期间发出的所有请求中从客户端返回的所有内容
来自wiki的会话Bean
在Java Platform,Enterprise Edition规范中,会话Bean是一种Enterprise Bean。会话bean为客户端执行诸如计算或数据库访问之类的操作。虽然会话bean可以是事务性的,但如果发生系统崩溃,则无法恢复。会话bean对象可以是无状态的,也可以跨方法和事务维护会话状态。如果会话bean维护状态,那么如果必须从内存中删除该对象,则EJB容器将管理此状态。但是,会话bean对象本身必须管理自己的持久数据。
用简单的话来说
会话跟踪是在网站访问者从一个页面移动到另一个页面时维护有关网站访问者的信息或状态的过程。它需要Web开发人员的一些工作,因为它没有内置机制。从浏览器到Web服务器的连接通过无状态超文本传输协议(HTTP)进行
AND
SFSB是针对通过多次调用同一会话bean(即会话)的托管客户端状态而设计的。如果你看一下JBoss Seam,你会发现SFSB对于会话上下文的使用非常多。
在EJB3中,没有“无状态比有状态会话bean更好”这样的东西。例如,一个提供像信用卡处理器(无状态)的服务,一个提供多屏幕向导用例(有状态)的处理。
在我看来管理使用HttpSession和无状态会话bean的状态非常困难且有问题。
编辑: HTTPSession用于保持会话跟踪,就像用户会话一样。例如,您想创建一个登录,注销机制然后您必须需要HTTPSession,因为当用户将开始导航时不同的页面然后这个HTTPsession将记住世界卫生组织要求的页面,否则它是不可能的(因为HTTP是无状态协议)
现在在会话中你只需设置用户名和密码的会话,你正在检查每一页如果此会话存在,则显示页面
如果,您必须在多个请求中发送此用户的大量信息?在这种情况下,您将在有状态会话bean中设置所有这些信息。但现在有一天,在现代框架会话和信息中,所有内容都存储在会话bean中,因为从会话bean可以很容易地管理它们。当我们纯粹使用Servlet和JSP技术