В моем веб-приложении, когда пользователь входит в систему, я добавляю свой идентификатор к вектору допустимых идентификаторов в сервлете, когда он выходит из системы, я удаляю его идентификатор из вектора, поэтому я могу видеть, сколько активных пользователей , если пользователь забывает выйти из системы, мой servelt генерируется HTML имеет:Как обнаружить закрытие браузера?
<meta http-equiv="Refresh" content="30; url=My_Servlet?User_Action=logout&User_Id=1111">
в теге, чтобы автоматически регистрировать его.
Но я заметил, что многие пользователи там навсегда, никогда не выходили из системы. Я узнал, почему, закрыв их браузеры, они никогда не будут вручную или автоматически выходить из системы, поэтому их идентификаторы пользователя никогда не будут удалены из допустимого вектора идентификаторов пользователя.
Итак, мой вопрос: как определить, как пользователи закрывают свои браузеры, поэтому мой сервлет может удалить свои идентификаторы из вектора?
Я вижу свет в конце туннеля, но есть еще проблема, моя программа имеет что-то вроде этого:
Активный Список пользователей:
User_1 : Machine_1 [ IP_1 address ]
User_2 : Machine_2 [ IP_2 address ]
User_3 : Machine_3 [ IP_3 address ]
...
Как я знаете, от слушателя сессии, сеанс пользователя закончился и, следовательно, удалить его из моего списка?
Я надеялся, когда закончится сессия, будет вызван метод HttpServlet destroy()
, и я могу удалить идентификатор пользователя там, но он никогда не вызывается, когда пользователь закрывает свой браузер, почему? И есть ли какой-либо другой метод в HttpServlet, который вызывается при закрытии сеанса?
BTW - я понятия не имею, как код, который я связан с будет работать в кластерном/многопользовательской среде VM. Я подозреваю, что не очень хорошо. –
Эта ссылка http://www.stardeveloper.com/articles/display.html?article=2001112001&page=1 не работает. Обновите ur ответ. – OO7