Java中的服务器会话管理

时间:2011-05-20 12:19:21

标签: java session gwt servlets

如何在服务器会话中处理静态变量?

我有30个不同的功能,在服务器上没有真正的实现,但它们目前通过一些静态变量共享数据(我知道这很糟糕,但我只是测试它)。现在,如果我有不同的客户端连接到服务器,他们会相互干扰,没有客户端会获得正确的数据。

所以我想知道在创建一个类时,如果没有将二十个引用其他对象传递给一个类,那么处理这个不同的Session数据有什么好方法。

另一个问题是,这些类会实现线程,因此我无法避免在将响应发送回服务器时完成操作。 (因此,根据客户端不能选择切换当前的静态变量)

1 个答案:

答案 0 :(得分:2)

如果您不想将所有这些内容放在会话中(session.setAttribute(..).getAttribute()),那么您可以使用地图地图:

public static Map<String, Map<String, Object>> sessionValues = ...

并从该地图设置/获取。其中:

  • 第一张地图的关键是会话ID(可以通过session.getId()
  • 获取)
  • 第二张地图的关键是属性名称
  • 第二张地图的值是属性值

因此,您可以在不依赖servlet API的情况下使会话具有唯一值。