我有一个GWT应用程序在其后端有RPC服务。我目前正在尝试实现用户支持,唯一仍然存在的问题是我应该存储会话数据的方式。在GWT应用程序中使用会话
我存储使用
getThreadLocalRequest().getSession().setAttribute("sid", "randomSIDgoeshere");
所以,第一个问题是不是更GWT对Java servlet的会话ID。此代码是否保证下一次我作出这样一个电话:
getThreadLocalRequest().getSession().getAttribute("sid");
它要么是空(如果它被调用为尚未访问过的一段代码,其中SID属性设置用户)或者它与我已经为该用户保存的完全相同的SID。换句话说,这两个代码是用户特定的吗? (通过用户我的意思是单个计算机上的单个浏览器)
第二个问题是关于存储SIDs和一些额外的数据,如用户ID之间的映射。如果我有这样的代码:
public class MyGwtServiceImpl extends RemoteServiceServlet implements MyGwtService {
// SID to User ID mappings
private final Map<String, String> sessions =
new HashMap<String, String>();
...
}
能够保证所有的sessions
始终是同一个对象的所有请求,除非整个应用程序终止其数据将保持“活着”? (例如Tomcat停止)这是正常的方法还是我应该坚持所有这些映射到我的数据库?
谢谢,真是太棒了! – agibalov 2012-01-08 22:22:18