Como posso carregar manualmente uma sessão Java usando um JSESSIONID?

Eu tenho um servlet que lida com um post de formulário multipartes. A postagem está sendo feita por um componente de upload de arquivo Flash embutido na página. Em alguns navegadores, o POST gerado pelo Flash não inclui o JSESSIONID, o que impossibilita o carregamento de determinadas informações da sessão durante a postagem.

O componente de upload flash inclui informações de cookie e sessão em um campo de formulário especial. Usando este campo de formulário, posso recuperar o valor JSESSIONID. O problema é que não sei como usar esse valor JSESSIONID para carregar manualmente essa sessão específica.

Editar - Com base na solução da ChssPly76, criei o seguinteHttpSessionListener implementação:

    @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 adiciona todas as sessões aoServletContext como atributos mapeados por seus IDs exclusivos. Eu poderia colocar um mapa de sessões no contexto, mas parece redundante. Por favor, poste qualquer pensamento sobre esta decisão. Em seguida, adiciono o seguinte método ao meu servlet para resolver a sessão por id:

    private HttpSession getSession(final String sessionId) {
        final ServletContext context = getServletContext();
        final HttpSession session = (HttpSession) context.getAttribute(sessionId);
        return session;
    }

questionAnswers(5)

yourAnswerToTheQuestion