У меня есть метод Spring-контроллера как таковой:
@RequestMapping(value = "/resetTimeoutForClient", method =
{RequestMethod.POST, RequestMethod.GET}, produces = "application/json")
public ResponseEntity<String> resetTime(HttpServletRequest request) {
HttpSession session = request.getSession(false);
Date date = java.util.Calendar.getInstance().getTime();
DateFormat formatter =
DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);
JsonObject jsonObjectReturn = new JsonObject();
jsonObjectReturn.addProperty("checkingSessionAt", date.toString());
if (null == session){
jsonObjectReturn.addProperty("sessionIsActive", false);
}
else {
int sessMax = session.getMaxInactiveInterval();
Date lastAccessed = new Date(session.getLastAccessedTime());
String lastAccessedReadable = formatter.format(lastAccessed);
String theSessionID = session.getId();
jsonObjectReturn.addProperty("sessionID", session.getId());
jsonObjectReturn.addProperty("sessionIsActive", true);
}
String testme = jsonObjectReturn.toString();
return new ResponseEntity<>(testme, HttpStatus.OK);
}
Цель этого метода состоит в том, что после вызова через вызов AJAX (см. Далее) контейнер (Oracle Web Logic) будет сбрасыватьвремя ожидания сеанса, которое установлено в 45 минут в файле web.xml.
Вызов AJAX находится в функции и выглядит следующим образом:
function sessPingServer() {
return $.ajax({
url: "/mydomain/resetTimeoutForClient",
type: 'GET'
});
}
... и эта функция AJAXвызывается:
sessPingServer()
.done(function (response) {
if (!response.sessionIsActive){
// Log em out...
sessLogOut();
}
else {
// Restart timers...
}
})
Когда нажимается кнопка на модале, которая должна «Расширить сеанс», запускается код AJAX и вызывается этот метод сервера.
Итак, у меня естьпростой вопросИз того, что я читал на нескольких страницах SO, я подумал, что наличие этого кода AJAX, вызывающего метод контроллера, сбросит таймер тайм-аута сеанса.Это не.У меня установлены контрольные точки в методе контроллера, и я могу убедиться, что идентификатор сеанса один и тот же каждый раз, когда вызывается метод, и значения сеанса lastAccessed верны.
Могут ли некоторые умные люди сказать мне, что яздесь делаешь неправильно?Почему эта конструкция не сбрасывает таймер сеанса?Есть что-то очень очевидное, что мне не хватает?
Спасибо