【发布时间】:2014-10-13 19:01:06
【问题描述】:
我正在使用一个 servlet,在其中我需要为每个用户创建一个对象实例,通常我会使用单例来执行此操作,但因为(据我所知)servlet 本身作为单例工作我是有点迷茫:
我怎样才能为每个会话/用户准确地生成一个实例? 我如何确定它会在会话超时时被销毁?
最好的方法是什么,等待 HttpServlet 的某些事件或对访问某些属性的请求采取行动以了解正在调用的会话?
编辑: 实际场景是一个使用外部组件进行数据访问的 Web 应用程序,这个对象对数据检索的作用并不有趣,可能是数据库访问或 Web 服务调用,我可以忽略它。 我必须为每个 Httpsession 创建一个该对象的实例,并确保它在会话过期时间后被销毁。
编辑
似乎 HttpSessionListener 可能是一个解决方案:我可以创建我的对象,在创建会话时将其在 Map 中与 sessionid 相关联,并在会话到期时销毁。有人有这方面的经验吗?
【问题讨论】:
-
线程怎么样?你试过了吗?
-
Sorry Ashes 但我从来没有使用过“线程”这个词会话
-
为每个用户维护一个会话 ID?会话范围:每个页面/每个浏览器/每个应用程序?
-
不废话,我们说的是创建一个特定类的实例,我们为每个 HTTPSession 称它为 Foo