EIN Servlet & MEHRERE Clients -> Multithreading-Probl

Status
Nicht offen für weitere Antworten.
Hallo,
also ich habe jetzt mal eine ganz, ganz dumme Frage...

Ich habe ein Java-Servlet geschrieben, dass unter anderem globale Variablen enthält. Das Servlet läuft auf einem Tomcat-Server. Das Problem ist jetzt folgendes:
Wenn mehrer Clients auf dieses Servlet zugreifen, werden keine extra Instanzen/Prozesse dieses Servlets für jeden Client erzeugt, sondern es läuft immer nur EIN-UND-DIESELBE Servlet-Instanz. Das heisst, wenn z.B. Client A etwas in ein Textfeld schreibt (dessen Inhalt dann in einer glob. Variable gespeichert wird) und anschliessend Client B auf das Servlet zugreift, erscheint im Textfeld von Client B der Text von Client A !!!
Ich dachte bisher, dass der Tomcat diese Fallunterscheidung von alleine bewältigt, dass er die Anfragen selbsständig multithreaded - oder hab ich mich jetzt da total verpeilt und seh den Wald vor lauter Bäumen nicht? ???:L
Muss ich den Tomcat dahingehend noch konfigurieren?? Oder muss ich das Problem selber programmiertechnisch lösen und eine Art Verwaltung dafür im Servlet programmieren??? Aber das wär doch irgendwie unsinnig, da kann ich ja gleich meinen eigenen Server schreiben.
Irgendwie bin ich jetzt ganz schön verwirrt...ich hoffe, mir kann jemand helfen. ??? :?
 

KSG9|sebastian

Top Contributor
was soll ne globale variable sein ? und nein, tomcat macht das eigentlich von alleine. sonst hätte ich ja auf jeder seite die mit tomcat läuft adminrechte, sofern ein admin sich eingeloggt hätte
 

Bleiglanz

Gesperrter Benutzer
wenn du member des servlets meinst:

ja, genau so ist es und genau so ist es richtig!

für globale Variablen gibts den ServletContext, sollte aber sparsam eingesetzt werden
 
Hi,
also die Lösung für mein Problem sind die sogenannten sessions, wie man sie z.B. auch von virtuellen Einkaufskörben her kennt...
 
Das Problem ist, dass für die doGet()- und doPost()-Methoden bei jedem Aufruf eine extra Instanz für jeden Client erzeugt wird. Bei globalen Variablen ist das aber nicht so, sie existieren genau einmal im ganzen Servlet und haben so für alle Clients denselben Wert. Wenn man also temporäre Daten zwischenspeichern will, muss man Sessions benutzen.
 

Bleiglanz

Gesperrter Benutzer
Zauberlehrling hat gesagt.:
Das Problem ist, dass für die doGet()- und doPost()-Methoden bei jedem Aufruf eine extra Instanz für jeden Client erzeugt wird. Bei globalen Variablen ist das aber nicht so, sie existieren genau einmal im ganzen Servlet und haben so für alle Clients denselben Wert. Wenn man also temporäre Daten zwischenspeichern will, muss man Sessions benutzen.

Nein, der Webcontainer verwendet einen Pool von Objekten (Servlet-Instanzen), du weisst vorher nicht, welches konkrete Ding bei einer vorliegenden Abfrage mit doGet oder doPost belästigt wird

deshalb sind member-variablen tödlich, wenn sie nicht konstant sind...
 

Bleiglanz

Gesperrter Benutzer
Ja, wenn die Daten immer zu einer "Sitzung" gehören; wenn sie für alle Benutzer gleich sind ("application scope") dann gehören sie in den ServletContext
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Servlet TrivialProblem Tools - Maven, Gradle, Ant & mehr 3
S Problem bei Nutzung einer eigenen EJB in einem Servlet Tools - Maven, Gradle, Ant & mehr 2
S Servlet-JSP-Anwendung mit Maven und Eclipse Tools - Maven, Gradle, Ant & mehr 4
L ANT + Servlet Tools - Maven, Gradle, Ant & mehr 13
F Servlet mit Datenbank-Anbindung Tools - Maven, Gradle, Ant & mehr 2
karambara größere daten von applet nach servlet schicken (port 80) Tools - Maven, Gradle, Ant & mehr 2
W In JSP Variable von Servlet abfragen Tools - Maven, Gradle, Ant & mehr 2
M applet mit servlet verbindin Tools - Maven, Gradle, Ant & mehr 3
M Java Servlet, mit <a href => ansteuern Tools - Maven, Gradle, Ant & mehr 8
K Servlet mit Tomcat 5.05 starten! Tools - Maven, Gradle, Ant & mehr 2
W git Mehrere git-Repos zusammenführen Tools - Maven, Gradle, Ant & mehr 2
fastjack Maven: eine Jar für mehrere Teilprojekte Tools - Maven, Gradle, Ant & mehr 5
D [Maven] mehrere Abhängigkeiten benutzen gleichbenannte aber verschiedene Resource Tools - Maven, Gradle, Ant & mehr 3
A Ant mehrere Befehle via sshexec? Tools - Maven, Gradle, Ant & mehr 2
G Mehrere libs mit jarsigner signieren Tools - Maven, Gradle, Ant & mehr 4
S applet ueber mehrere ordner hinweg laden Tools - Maven, Gradle, Ant & mehr 2
A mehrere class.dateien Tools - Maven, Gradle, Ant & mehr 10
G mehrere Applets auf einer Seite Tools - Maven, Gradle, Ant & mehr 7
A mehrere Applets starten Tools - Maven, Gradle, Ant & mehr 4
J Email an mehrere Empfänger aus einem Applet abschicken Tools - Maven, Gradle, Ant & mehr 4
L Mehrere java Packages in HTML importieren Tools - Maven, Gradle, Ant & mehr 5
B Mehrere Applets verbinden Tools - Maven, Gradle, Ant & mehr 2
T Java Applikation an Clients verteilen Tools - Maven, Gradle, Ant & mehr 5
M clients über Java-applets auf Com-Port von server Tools - Maven, Gradle, Ant & mehr 5
T Webstart auf Windows Clients Tools - Maven, Gradle, Ant & mehr 12

Ähnliche Java Themen


Oben