Tengo un servlet que maneja una publicación de formulario multiparte. La publicación en realidad está siendo realizada por un componente de carga de archivos Flash incrustado en la página. En algunos navegadores, el POST generado por Flash no incluye el JSESSIONID, lo que me imposibilita cargar cierta información de la sesión durante la publicación.¿Cómo puedo cargar manualmente una sesión Java usando un JSESSIONID?
El componente de carga de flash incluye cookies e información de sesión dentro de un campo de formulario especial. Usando este campo de formulario, puedo recuperar el valor de JSESSIONID. El problema es que no sé cómo usar este valor de JSESSIONID para cargar manualmente esa sesión específica.
Editar - Sobre la base de la solución de ChssPly76, he creado la siguiente HttpSessionListener aplicación:
@Override
public void sessionCreated(final HttpSessionEvent se) {
final HttpSession session = se.getSession();
final ServletContext context = session.getServletContext();
context.setAttribute(session.getId(), session);
}
@Override
public void sessionDestroyed(final HttpSessionEvent se) {
final HttpSession session = se.getSession();
final ServletContext context = session.getServletContext();
context.removeAttribute(session.getId());
}
que se suma a todas las sesiones del ServletContext como atributos mapeados por sus identificadores únicos. Podría poner un Mapa de sesiones en el contexto, pero parece redundante. Por favor, publique cualquier pensamiento sobre esta decisión. A continuación, agregue el método siguiente a mi servlet para resolver la sesión id:
private HttpSession getSession(final String sessionId) {
final ServletContext context = getServletContext();
final HttpSession session = (HttpSession) context.getAttribute(sessionId);
return session;
}
+1 .. muy buena pregunta – peakit