Wie kann ich eine Java-Sitzung mit einer JSESSIONID manuell laden?

Ich habe ein Servlet, das ein mehrteiliges Formularpost behandelt. Der Beitrag wird tatsächlich von einer in die Seite eingebetteten Flash-Datei-Upload-Komponente erstellt. In einigen Browsern enthält der von Flash generierte POST die JSESSIONID nicht, wodurch es mir unmöglich ist, bestimmte Informationen aus der Sitzung während des Posts zu laden.

Die Flash-Upload-Komponente enthält Cookie- und Sitzungsinformationen in einem speziellen Formularfeld. Mit diesem Formularfeld kann ich den JSESSIONID-Wert tatsächlich abrufen. Das Problem ist, dass ich nicht weiß, wie ich diesen JSESSIONID-Wert zum manuellen Laden dieser bestimmten Sitzung verwenden kann.

Bearbeiten - Basierend auf der Lösung von ChssPly76 habe ich Folgendes erstelltHttpSessionListener Implementierung:

    @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());
    }

Welches fügt alle Sitzungen derServletContext als Attribute, die durch ihre eindeutigen IDs zugeordnet sind. Ich könnte stattdessen eine Sitzungsübersicht in den Kontext stellen, die jedoch überflüssig erscheint. Bitte posten Sie Ihre Gedanken zu dieser Entscheidung. Als Nächstes füge ich meinem Servlet die folgende Methode hinzu, um die Sitzung nach ID aufzulösen:

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

Antworten auf die Frage(5)

Ihre Antwort auf die Frage