запрос.getSession (false) не обнаруживает предыдущий сеанс

У меня есть три разных сервера под управлением Tomcat 7. Я использую JDK 7 и Spring framework.

В моей среде разработки и производства все работает гладко, однако на третьей машине я сталкиваюсь с проблемой обнаружения сеансов.

На третьем сервере начальная страница открывается нормально, но следующая строка кода возвращает null.

    @RequestMapping(value="/getCaptcha",method=RequestMethod.POST)
    public @ResponseBody OutputStream getCaptchaImage(HttpServletRequest request, HttpServletResponse response) throws IOException{

    String stToken = request.getParameter("token");
    OutputStream os = null;

    try{
        HttpSession httpsession = request.getSession(false);
        System.out.println("HttpSession: "+httpsession);
        if(httpsession != null){
            ...
        }
    }
    catch(Exception e){
        e.printStackTrace();
    }

    return os;
}

Здесь HttpSession является null, и он не может обнаружить сеанс, который я ранее установил с

    HttpSession httpsession = request.getSession(true);

Помимо этого, во всем моем проекте просьба.getSession (false) возвращает null, даже если сеанс был ранее установлен.

Я не уверен, если я пропускаю что-то, так как тот же код прекрасно работает на двух других серверах. Любая помощь / руководство / предложения будут высоко оценены.

1 ответ

  1. Вы можете просто объявить сеанс HTTP в методе запроса Spring MVC

    @RequestMapping("/signup")
    public void handleMyRequest(HttpSession session, ...) {
       ...
    }
    

    Не уверен, соответствует ли он вашим требованиям или нет. Я сделал это для своего проекта.