Если я правильно прочитал связанный вопрос SO, проблема не в недействительности идентификатора сеанса, а в том, как сервер обрабатывает флэш-объект: он считается дополнительным клиентом, а не частью остальной части окна браузера. Таким образом, создаются 2 отдельных сеанса, в результате чего идентификатор при загрузке будет другим или равен нулю.
Решение состоит в том, чтобы вручную найти правильный идентификатор сеанса или заставить сервер назначить правильный идентификатор для нового сеанса. Это делается путем пересылки jsessionid во Flash в качестве переменной и последующего добавления его в качестве параметра GET в запрос HTTP-загрузки, чтобы его можно было извлечь на сервере и использовать для поиска правильного сеанса.
В этом примере автор использует Controller
в качестве имени сервлета, и action=33
, вероятно, используется для вызова какого-либо метода для него. Это специфично для данного конкретного приложения, но не важно для вашего решения.
Для вас важен конец строки: &jsessionid=<%=request.getSession().getId()%>
Этот код JSP по существу добавляет идентификатор сеанса Java в переменную, содержащую URL-адрес запроса на загрузку. Вы можете сделать это на простом Java или любом другом языке, который имеет доступ к правильному идентификатору сеанса - важно то, что он сначала передается в плагин Flash, , затем добавляется в запрос на загрузку, , затем снова отправляется на сервер, а , а затем используется для поиска или создания правильного идентификатора сеанса для обработки загрузки.
Это код, который автор использовал для создания нового сеансового куки:
if (request.getParameter("JSESSIONID")!=null) {
Cookie userCookie = new Cookie("JSESSIONID", request.getParameter("JSESSIONID"));
response.addCookie(userCookie);
}