到目前为止,我发现的最佳解决方案是计算会话的创建和销毁时间。
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) { 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++; }}
然后在VaadinServlet init()方法中添加SessionListeners
@WebServlet(urlPatterns = " getService().addSessionInitListener(new VaadinSessionListener.VaadinSessionInitListener()); getService().addSessionDestroyListener(new VaadinSessionListener.VaadinSessionDestroyListener()); }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)