如何仅在用户会话期间保留对象

时间:2016-04-30 12:44:47

标签: java persistence

我正在做一个java ee web应用程序(有3层:web,ejb,持久性db)。我想保存一些对象,但仅限于会话时间(不在db中保存)。我怎样才能做到这一点?我应该在托管bean中保存对象(pojos)吗?像这样每个用户都有自己的保存对象。

谢谢你们

1 个答案:

答案 0 :(得分:1)

在http会话期间,您有几种方法可以将一些特定于用户的信息存储在内存中。

  1. 具有会话范围的托管bean(带注释的@SessionSoped)。正如文件所说:
  2.   

    会话上下文在同一HTTP会话中发生的所有servlet请求之间共享。在调用所有HttpSessionListener之后,当调用了invalidate()的任何请求结束时,在调用了所有过滤器和ServletRequestListener后,HTTPSession超时时会破坏会话上下文。

    这样每个用户都可以将自己的数据集存储在会话范围的bean中。

    1. 直接访问HttpSession 并在那里存储用户特定数据。

      FacesContext facesContext = FacesContext.getCurrentInstance(); HttpSession session =(HttpSession)facesContext.getExternalContext()。getSession(false); ... session.setAttribute(key,value); ... session.setAttribute(键);