У меня есть приложение GWT, в основе которого лежит служба RPC. В настоящее время я пытаюсь реализовать поддержку пользователей, и единственный вопрос, который все еще остается, - это способ хранения данных сеанса.
Я сохраняю идентификатор сеанса, используя
getThreadLocalRequest().getSession().setAttribute("sid", "randomSIDgoeshere");
Итак, первый вопрос больше касается сервлетов Java, чем GWT.Гарантирует ли этот код, что в следующий раз, когда я сделаю такой вызов:
getThreadLocalRequest().getSession().getAttribute("sid");
, он будет либо пустым (в случае, если он будет вызван для пользователя, который еще не посетил фрагмент кода, где установлен атрибут SID), либо он будет точно такой же SID, который я уже сохранил для этого пользователя. Другими словами, являются ли эти 2 фрагмента кода индивидуальными для пользователя? (от пользователя Я имею в виду один браузер на одном компьютере)
Второй вопрос касается хранения сопоставлений между идентификаторами безопасности и некоторыми дополнительными данными, такими как идентификатор пользователя. На случай, если у меня есть такой код:
public class MyGwtServiceImpl extends RemoteServiceServlet implements MyGwtService {
// SID to User ID mappings
private final Map<String, String> sessions =
new HashMap<String, String>();
...
}
Гарантируется ли, что sessions
всегда будет одним и тем же объектом для всех запросов, и его данные останутся «живыми», пока все приложение не будет завершено? (Например, Tomcat остановлен) Это нормальный подход или я должен сохранить все эти сопоставления в моей БД?