, , . , , , VaadinServlet ConcurrentHashmap, , SessionDestroyListener, . SessionInitListener, hashmap, , , , .
, - , , , :
public class SessionInfoServlet extends VaadinServlet {
private static final ConcurrentHashMap<User, VaadinSession> userSessionInfo = new ConcurrentHashMap<>();
public static void saveUserSessionInfo(User user, VaadinSession session) {
VaadinSession oldSession = userSessionInfo.get(user);
if(oldSession != null){
oldSession.close();
}
userSessionInfo.put(user, session);
}
public static Map<User, VaadinSession> getUserSessionInfos() {
return userSessionInfo;
}
@Override
protected void servletInitialized() throws ServletException {
super.servletInitialized();
SessionLifecycleListener sessionLifecycleListener = new SessionLifecycleListener();
getService().addSessionDestroyListener(sessionLifecycleListener);
}
private class SessionLifecycleListener implements SessionDestroyListener {
@Override
public void sessionDestroy(SessionDestroyEvent event) {
userSessionInfo.remove(event.getSession().getAttribute("user"));
}
}
}