protected void waitForLogout() { long start = System.currentTimeMillis(); Set<Session> loggedOnSessions; while (!(loggedOnSessions = getLoggedOnSessions()).isEmpty()) { try { Thread.sleep(100L); } catch (InterruptedException e) { log.error(e.getMessage(), e); } final long elapsed = System.currentTimeMillis() - start; Iterator<Session> sessionItr = loggedOnSessions.iterator(); while (sessionItr.hasNext()) { Session session = sessionItr.next(); if (elapsed >= session.getLogoutTimeout() * 1000L) { try { session.disconnect("Logout timeout, force disconnect", false); } catch (IOException e) { log.error(e.getMessage(), e); } sessionItr.remove(); } } // Be sure we don't look forever if (elapsed > 60000L) { log.warn("Stopping session logout wait after 1 minute"); break; } } }