Tar*_*rik 7 jsf scope ejb java-ee cdi
我知道无状态会话Bean是指EJB bean,而Request Scoped是指CDI bean(或JSF托管bean),因此我将首先从Java EE Tutoriel中提供它们的两个定义.
无状态会话Bean定义:
无状态会话bean不与客户端保持会话状态.当客户端调用无状态bean的方法时,bean的实例变量可能包含特定于该客户端的状态,但仅限于调用期间.方法完成后,不应保留特定于客户端的状态.
CDI Request Scoped定义:
用户在单个HTTP请求中与Web应用程序的交互.
我从这两个定义中理解的是,无状态会话bean的概念与请求范围概念相同,但我不确定,因为命名"会话"使我感到困惑.所以,我问自己是否是这种情况(相同的概念),也许他们会有类似的命名(使用请求而不是会话).
所以,我的问题是:EJB无状态会话bean和CDI/JSF请求范围bean之间是否有任何概念上的区别?
JB *_*zet 12
有一个很大的不同.
无状态EJB不会在调用之间维护状态.除了依赖于其他bean之外,它通常根本没有状态.它为其他组件提供服务.无状态bean的客户端可以调用它来提供HTTP请求,但是它们也可以在任何HTTP请求之外(批处理,预定作业或其他任何方式)调用它.
请求范围的bean通常具有状态(否则,它可能是应用程序范围的bean或无状态bean).此状态持续HTTP请求的持续时间.它不能在HTTP请求处理代码之外调用.请求范围的bean的一个很好的例子是当前用户: