Mam aplikację GWT, która ma usługę RPC na zapleczu. Obecnie próbuję wdrożyć obsługę użytkowników, a jedyne pytanie, jakie pozostaje, to sposób, w jaki powinienem przechowywać dane sesji.Praca z sesjami w aplikacji GWT
mam przechowywania identyfikatora sesji, używając
getThreadLocalRequest().getSession().setAttribute("sid", "randomSIDgoeshere");
Więc pierwsze pytanie jest bardziej do apletów Javy niż GWT. Czy ten kod gwarancję, że następnym razem, kiedy nawiązać połączenie tak:
getThreadLocalRequest().getSession().getAttribute("sid");
Byłoby też być null (w przypadku, gdy zostanie wywołany przez użytkownika, który jeszcze nie zwiedziliśmy kawałek kodu, w którym jest ustawiony atrybut SID) lub dokładnie taki sam identyfikator SID, który już zapisałem dla tego użytkownika. Innymi słowy, czy te 2 elementy kodu są specyficzne dla użytkownika? (przez użytkownik mam na myśli pojedynczą przeglądarkę na jednym komputerze)
Drugie pytanie dotyczy przechowywania odwzorowań między identyfikatorami SID a dodatkowymi danymi, takimi jak identyfikator użytkownika. W przypadku, gdy mam kod jak poniżej:
public class MyGwtServiceImpl extends RemoteServiceServlet implements MyGwtService {
// SID to User ID mappings
private final Map<String, String> sessions =
new HashMap<String, String>();
...
}
To jest zagwarantowane, że sessions
jest zawsze taki sam przedmiot dla wszystkich żądań i jego dane pozostają „żywe”, chyba że cała aplikacja jest zakończona? (Tomcat jest zatrzymany na przykład) Czy to normalne podejście lub powinienem utrzymywać wszystkie te mapowania na moim DB?
Dzięki, naprawdę świetna odpowiedź! – agibalov