На этом сайте мне нужна система, которая выходит из системы через 10 минут.Для входа в систему я использую простую процедуру вставки пользовательского (в моем случае Lid
) экземпляра, и выход из системы делает сеанс недействительным, кроме того, когда пользователь входит в таймерную задачу в пределах таймера, и через 10 минут делает недействительнымисеанс.
Вот код:
MyTask task = null;
private void setCurrent(String key, Object o) {
getRequest().getSession().setAttribute(key, o);
}
private <T> T getCurrent(String key) {
T value = (T) getRequest().getSession().getAttribute(key);
return value;
}
public void logIn(Lid lid) {
setCurrent("lid", lid);
Timer timer = new Timer();
task = new MyTask(getRequest().getSession());
System.out.println(task.toString());
timer.schedule(task,10*60*1000);
}
public void logOut() {
task.cancel();
getRequest().getSession().invalidate();
}
Это код MyTask:
public class MyTask extends TimerTask {
HttpSession session = null;
public MyTask(HttpSession session) {
this.session=session;
}
@Override
public void run() {
session.invalidate();
}
}
Проблема в том, что, когда я добровольно выхожу, он выдаетисключение, потому что он говорит, что переменная task
равна null
, и поэтому становится невозможным вызвать cancel()
для переменной task
.
Но я не получаю ее после регистрациив переменной создается экземпляр, а не null
.
Есть ли у вас какие-либо советы по этому поводу?Спасибо