Как получить все сессии в Vaadin
Я хочу знать, сколько пользователей подключено к моему приложению в режиме реального времени. У меня есть идея зациклиться на количестве сеансов, которые открыты, но я не могу найти, как это сделать. Если у вас есть другой способ сделать это, ваши предложения приветствуются.
2 ответов
лучшее решение, которое я нашел до сих пор, - это подсчитать сеансы, когда они создаются и уничтожаются.
public class VaadinSessionListener{
private static volatile int activeSessions = 0;
public static class VaadinSessionInitListener implements SessionInitListener{
@Override
public void sessionInit(SessionInitEvent event) throws ServiceException {
incSessionCounter();
}
}
public static class VaadinSessionDestroyListener implements SessionDestroyListener{
@Override
public void sessionDestroy(SessionDestroyEvent event) {
/*
* check if HTTP Session is closing
*/
if(event.getSession() != null && event.getSession().getSession() != null){
decSessionCounter();
}
}
}
public static Integer getActiveSessions() {
return activeSessions;
}
private synchronized static void decSessionCounter(){
if(activeSessions > 0){
activeSessions--;
}
}
private synchronized static void incSessionCounter(){
activeSessions++;
}
}
затем добавьте SessionListeners в метод VaadinServlet init ()
@WebServlet(urlPatterns = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = true, ui = MyUI.class)
public static class Servlet extends VaadinServlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
/*
* Vaadin SessionListener
*/
getService().addSessionInitListener(new VaadinSessionListener.VaadinSessionInitListener());
getService().addSessionDestroyListener(new VaadinSessionListener.VaadinSessionDestroyListener());
}
}
[опровержение]
вот не-ответ. Я ошибочно думал, что цитируемый метод отвечает на вопрос, но это не так. считайте это опровержением; вместо того, чтобы удалить этот ответ, я оставлю его, чтобы другие не делали моей ошибки.
VaadinSession.getAllSessions()
С Vaadin 7.2 пришло добавление статического метода,VaadinSession.getAllSessions
. Для истории, см. билет № 13053.
этот метод возвращает Collection
of VaadinSession
объекты, прикрепленные к одному HttpSession
.
этот метод сообщает вам, сколько объектов VaadinSession выполняется для HttpSession одного пользователя, а не не расскажите, сколько общих пользователей на вашем сервере приложений Vaadin.