Session wird mehrfach erzeugt

franzy

Aktives Mitglied
Hallo zusammen,

ich habe ein Problem im Kontext HttpSession.
Wir haben ein sehr altes Servlet am laufen. Der Request wird durch die service() Methode (Ich weiß es gibt mittlerweile get und post 🙂), ist historisch gewachsen wie man so schön sagt, verarbeitet.
In dieser Methode erzeuge ich eine neue Session für den User, wenn noch nicht vorhanden:
Java:
HttpSession session = request.getSession(false);
        
if(session == null)
{
    session = request.getSession(true);
}

jetzt rufe ich in dieser Methode noch eine weitere Methode A() auf. Dort prüfe ich dann ob der User ein Testuser ist. Ich hole mir dazu die Session und schaue:

Java:
HttpSession session = request.getSession(false);

if(session != null)
{
    if (session.getValue("isTestuser") != null) {
        isTestuser = (Boolean) session.getValue("isTestuser");               
    }   
}

In dieser Methode werden wiederum eine Methode B() aufgerufen. Auch da wir geprüft ob Testuser. Ist die gleiche Abfrage wie oben.

Wenn ich nun im Tomcat (Version 6) - ich weiß, alt - schaue dann bauen sich pro Request nicht eine Session auf sondern ein Vielzahl an Sessions. Das sehe ich ja im Tomcat Web Application Manager.

Ich verstehe tatsächlich nicht warum das passiert. Ich würde meinen mit einer Anfrage an das Servlet und das Neuerstellen der Session wird diese auch nur einmal gezählt.

Kennt jemand das Problem?

Grüße Franzy
 
Falls die Session in der URL encodet ist, steckt beim Erzeugen eines Links oder HTML-Form-URL ein Fehler.

Falls die Session Cookies verwendet, eventuell mal schauen, wie im Browser die Cookie-Einstellungen sind.
 
Http 1 ist ein Verbindungsloses Protokoll. Da wird bei jedem request eine neues socket aufgebaut und nach dem result wider beendet.

Deshalb wurden auch Cookies geschaffen um den User auf dem Server wider zu erkennen.

Http 2 ist das etwas anders.

Http 1 baut bei jedem request eine nuer tcp Verbindung auf die nach dem Response beendet wird.
 
Zuletzt bearbeitet:
Hallo Brirsta,,

mir war aus deiner Aussage nicht verständlich was du meinst. Das hat nichts mit Basiswissen zu tun. Auch mit Basiswissen kann eine Antwort nicht verstanden werden. Nicht falsch verstehen, ich freue mich ja über eine Antwort!
Das Projekt was ich übernommen habe ich riesig und über 15 Jahre alt. Demensprechend etwas schwierig!

Das mit der Session-ID in der URL das kann natürlich sein.
Dennoch bin ich etwas irritiert. Ich baue ja eine neue Session auf in der service() methode. Die ist ja vorhanden in Methode A(), ich bekomme zumindest eine zurück. Also muss diese ja ohne Session-ID in der URL vorhanden sein. Ist das dann ein Zeichen dafür das es per Cookie abgebildet ist.

Grüße
 
Wenn es um Sessions pro Request geht, sind Cookies oder SessionIDs egal, die sind erst bei Sessions über mehrere Requests hinweg relevant.

Ich würde auch erstmal das von @mihe7 vorgeschlagene testen, und nur einen einzelnen Request abgesetzt mit curl o. ä. testen, und prüfen wie es damit aussieht.
 
Aber nur so am Rande: bei eine so alten App fällt doch so ein Fehler nicht plötzlich jetzt auf? Da hat sich doch sicherlich irgendwas geändert?
 
ich kann dir nicht sagen warum das jetzt erst ausfällt. Mir ist das in einem anderen Kontext aufgefallen. Uns fliegen die DB Verbindungen weg und da bin ich auf Fehlersuche gegangen und hab das gesehen. an die Anwendung traut sich keiner dran. Wie das so ist, Sie läuft grundsätzlich. ich werde eure Vorschläge mal testen. danke erst einmal!
 

Zurück
Oben