@SessionScoped如何使用EJB?CDI是否仅适用于web层?

@SessionScoped如何使用EJB?CDI是否仅适用于web层?,session,servlets,java-ee-6,cdi,ejb-3.1,Session,Servlets,Java Ee 6,Cdi,Ejb 3.1,@SessionScopedcdibean中如何定义会话 此注释是否仅在从Servlet容器调用时有效,其中会话以HttpSession的形式定义良好 如果没有,那么使用@Inject@SessionScoped MyBean MyBean的EJB如何知道会话真正是什么?我的意思是,这个EJB的方法可以由独立客户端、RESTful WS或其他视图调用。 在这种情况下会发生什么?如果注释没有意义,它应该为每个请求注入新鲜的MyBean实例,还是应该在所有请求中保留相同的实例?取自 会话作用域处于活

@SessionScoped
cdibean中如何定义会话 此注释是否仅在从Servlet容器调用时有效,其中会话以
HttpSession
的形式定义良好

如果没有,那么使用
@Inject@SessionScoped MyBean MyBean
的EJB如何知道会话真正是什么?我的意思是,这个EJB的方法可以由独立客户端、RESTful WS或其他视图调用。
在这种情况下会发生什么?如果注释没有意义,它应该为每个请求注入新鲜的
MyBean
实例,还是应该在所有请求中保留相同的实例?

取自

会话作用域处于活动状态:

在web应用程序中任何servlet的service()方法期间, 在任何servlet筛选器的doFilter()方法期间以及 容器调用任何HttpSessionListener、AsyncListener或 ServletRequestListener

总之,是的。它绑定到HttpSession。此外:

会话上下文在发生的所有servlet请求之间共享 在同一HTTP会话中。会话上下文在 HTTPSession超时,在所有HttpSessionListener都已启动之后 调用,并在调用invalidate()的任何请求的最后 调用,在所有筛选器和ServletRequestListener都已完成后调用 打电话来


真的,即使对于SFSB这样的东西,会话还有什么定义?当然,没有任何东西禁止您创建自己的作用域并将其绑定到您喜欢的任何对象。@LightGuard,我猜在SFSB中,“会话”从SFSB实例化一直持续到它的删除(或超时)。因此,只要我有一个引用,我就会使用相同的环境(会话)。@Gonzalo,谢谢你提供的信息。我想知道-如果我在一个没有此类作用域的环境中使用
@SessionScoped
bean(如前面提到的RESTWS),会发生什么情况。是否将每个请求视为新会话?那么SFSB呢,正如LightGuard提到的。
@SessionScoped
是指
HttpSession
会话还是SFSB会话?我的理解是@SessionScoped充当web层和EJB之间的粘合剂。我怀疑注释是否会对从Swing客户端调用的远程EJB产生任何影响。还请记住,JSF会话也由HttpSession支持,因此它将作为HttpSession传输到您的EJB中。谢谢,我将尝试检查注释在REST调用时的反应。