Невозможно продлить время ожидания сеанса на сервере веб-логики - PullRequest
0 голосов
/ 19 октября 2018

У меня есть метод 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 верны.

Могут ли некоторые умные люди сказать мне, что яздесь делаешь неправильно?Почему эта конструкция не сбрасывает таймер сеанса?Есть что-то очень очевидное, что мне не хватает?

Спасибо

...