@Override protected void onDeactivated(final ILifecycle lifecycle) { LOGGER.info("Received deactivation event: " + lifecycle); EventUtil.removeListener(lifecycle, this); final RpcSession sessionToLogout = knownSessions.remove(lifecycle); if (null == sessionToLogout) { LOGGER.info("No RPC session found to log out."); return; } if (sessionToLogout.containsKey(KEY_USER_ID) && sessionToLogout.containsKey(KEY_SESSION_ID)) { final String userId = String.valueOf(sessionToLogout.get(KEY_USER_ID)); if (!SpecialUserStore.SYSTEM_USER_NAME.equals(userId)) { final String sessionId = String.valueOf(sessionToLogout.get(KEY_SESSION_ID)); //Log as a user activity LogUtils.logUserEvent(AUDIT_LOGGER, userId, "Session closed: " + sessionId); //Log is as user access event LogUtils.logUserAccess(AUDIT_LOGGER, userId, "Logged out."); } } sessionToLogout.put(KEY_IS_AUTHENTICATED, false); fireLogoutEvent(sessionToLogout); } }