我有一個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