Frage zu Servlets



  • Hallo!

    Ich hoffe mal das ich meine Frage verständlich formuliert bekomme...
    --------------------------------------------------------------------

    Ich arbeite an einem Servlet das die Verwaltung von Lieferantengruppen
    auf Abteilungsebene ermöglicht. Als Oberfläche dient ein Applet, das mit
    dem Servlet über ein serialisiertes Objekt kommuniziert.

    Bei einem Request vom Applet prüfe ich ob schon eine Session vorhanden ist,
    sonst lege ich eine an. Aus der Session lese ich ein Attribut welches die
    ID des aktuellen Benutzers enthält. Falls noch keine Session da war, lese ich
    die ID aus einem Cookie und packe sie dann in meine neue Session.

    Soweit, so gut. Jetzt kommt meine Frage:

    Ich brauche die ID für einige Datenbankzugriffe. Wenn das Servlet von mehreren
    Clients angesprochen wird, behandelt es die Anfragen standardmäßig in mehreren
    Threads, oder? Wenn ich nun in meiner Servletklasse ein Attribut wie

    private String ID;
    

    anlege und darin die Benutzeridentifikation aus der Session ablege, bleibt
    sie dann für den jeweiligen Thread erhalten, oder wird sie in jedem neuen Thread überschrieben?

    Wäre es klüger die ID in unten stehender Form an die DB-Funktionen zu übergeben?

    meineDbFunktion(serialisiertesObjekt, (String)session.getAttribut("UID"));
    

    Gruß,

    Stefan



  • Vielleicht hast du dein Problem ja in der Zwischnezeit gelöst.

    Prinzipiell kannst du deine ID gefahrlos aus der Session auslesen. Probleme bekommst du nur dann, wenn du diese in ein Attribut deiner Servlet Klasse speicherst. Das Attribut wird dann bei konkurrierenden Aufrufen überschrieben.
    Das heisst, du solltest deine Werte höchstens in Variablen der Methoden speichern.

    /Dirk


Anmelden zum Antworten