servlet synchronisationsproblem

Status
Nicht offen für weitere Antworten.
T

TangoFan

Gast
Hab mal wieder ein Problem :lol: Und zwar habe ich folgendes Servlet:

Code:
public class Test{
...
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	synchronized(this)
	{
         ... speichere Daten in eine gemeinsame Datenstruktur
         }
	    	
		
}

Also der Code funktioniert einwandfrei. Auch die synchronisation klappt super und meine "gemeinsameDatenstruktur" wird nicht zerstört.



Lagere ich aber nun den Code im "doGet" aus in eine andere Methode dieser Klasse, dann gibts wieder Probleme:
Code:
public class Test{
...
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			
	this.handleRequest(request, response);    		
}  

private void handleRequest (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

         synchronized(this)
	{
         ... speichere Daten in eine gemeinsame Datenstruktur
         }
}

Unterliegt die Methode "doGet" von Haus aus einer speziellen Behandlung oder warum gibts synchronisationsprobleme nur wenn ich auslagere?
 
S

SlaterB

Gast
was sind denn die 'synchronisationsprobleme'?
was ist die gemeinsame Datenstruktur (Exemplarvariablen oder globaler)?

dir ist bekannt, dass evtl. mehrere Objekte der Servlet-Klasse unterwegs sind
und sich nicht gegenseitig synchronisieren wenn du nur auf this synchronisierst?

-------

inwiefern das was mit der Unteroperation zu tun hat ist mir persönlich aber völlig schleierhaft,
sehe da keinen relevanten Unterschied und auch keine Möglichkeit eines externen Eingriffs
 
G

Guest

Gast
dir ist bekannt, dass evtl. mehrere Objekte der Servlet-Klasse unterwegs sind
und sich nicht gegenseitig synchronisieren wenn du nur auf this synchronisierst?
Ich vermute mal das wird es sein. Worauf soll ich dann synchronisieren?


was sind denn die 'synchronisationsprobleme'?
Wenn im sync-Block versucht wird aus einer ArrayList einen bestimmmten Eintrag zu entfernen dann ist der plötzlich nicht mehr da, weils wohl schon eine andere Servlet-Instanz gelöscht hat. Der kommt also ziemlich durcheinander.


was ist die gemeinsame Datenstruktur (Exemplarvariablen oder globaler)?
Die Datenstruktur ist eine zusätzliche Singleton-Klasse, in welcher mittels getter/setter die Daten eingefügt/entfernt werden. Wie gesagt, sobald der Code komplett im "doGet" liegt, funktioniert auch alles super.
 
S

SlaterB

Gast
statt this auf die Klasse synchronisieren (Test.class) oder auf das Singleton,

wenn du dir aber sicher bist, dass es nicht nur zufällig mal ging und mal nicht,
dann würde ich an deiner Stelle einige Zeit in die Analyse stecken,
denn es ist ja immer noch unverständlich warum es mal zum Problem kommt und mal nicht

z.B. in dem Singleton mitloggen, welcher Request zu welcher Zeit welche Änderung macht,
insbesondere welches Servlet dabei aktiv war
(Objekt der Servlet-Klasse am hashcode() von anderen unterscheiden
oder im Konstuktor jedem Objekt der Servlet-Klasse eine eindeutige Nummer zuweisen)

evtl. dann noch vor, in und nach jedem Synchronzised-Block ne Logmeldung,
evtl. das ganze mal ganz ohne Synchronisierung laufen lassen und und und,
aber muss ja nicht sein ;)
 
T

TangoFan

Gast
Also wenn ich die komplette Methode auf synchronized umstelle dann funktioniert wieder alles:

Code:
private synchronized void handleRequest (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

           ... speichere Daten in eine gemeinsame Datenstruktur 
       
}


Tu ich aber den synchronized-Block umändern auf z.B.:
Code:
         synchronized(Test.class) 
         { 
         ... speichere Daten in eine gemeinsame Datenstruktur 
         }

dann klappts nicht. Ist halt schon seltsam dass wenn der Code im "doGet()" steht dort funktioniert und hier in dieser Methode nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H What is the Life Cycle of an Object Created Within/Outside of a Servlet? Will that item be destroyed after the session ends? Java Basics - Anfänger-Themen 1
J MySQL Datumsabfrage über ResultSet in Java-Servlet Java Basics - Anfänger-Themen 4
J javax.servlet.ServletException: Name is null Java Basics - Anfänger-Themen 7
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
E Pdf-Document lässt sich im Servlet nicht öffnen Java Basics - Anfänger-Themen 5
E Erste Schritte Java Webeintwicklung (JSP/Servlet), wie am Besten einsteigen? Java Basics - Anfänger-Themen 0
S Java Servlet - Suche Java Basics - Anfänger-Themen 1
R Upload Servlet: Ausgabe nicht korrekt Java Basics - Anfänger-Themen 2
H Variablen Servlet. Int i global Java Basics - Anfänger-Themen 4
C Inputreader Servlet Nullpointerexception Java Basics - Anfänger-Themen 6
B Servlet und Eclipse Java Basics - Anfänger-Themen 2
B Servlet ausfuehren Java Basics - Anfänger-Themen 4
O Servlet Klassen ? Java Basics - Anfänger-Themen 7
B Datenzugrifft: Servlet -> Objekte Java Basics - Anfänger-Themen 4
T Servlet - oder doch nicht? Java Basics - Anfänger-Themen 4
T Servlet HTML-Formular Java Basics - Anfänger-Themen 9
F Aus Servlet in JSP schreiben Java Basics - Anfänger-Themen 2
T Servlet wird nicht erkannt Java Basics - Anfänger-Themen 10
X Kurve im Servlet zeichnen lassen Java Basics - Anfänger-Themen 4
P Problem mit Servlet Java Basics - Anfänger-Themen 9
D Periodische Aufgaben erledigen in Webanwendung (Servlet/JSP) Java Basics - Anfänger-Themen 7
I Probleme mit Tomcat / Servlet auf Linux (Debian) Java Basics - Anfänger-Themen 7
Tandibur [erledigt] jsp überträgt nicht alle Parameter an Servlet Java Basics - Anfänger-Themen 2
D Servlet kann nicht auf Instanz zugreifen Java Basics - Anfänger-Themen 10
D Servlet mit Utilities Java Basics - Anfänger-Themen 14
J Servlet Interface javax.servlet.Servlet Java Basics - Anfänger-Themen 2
G Parameter in Servlet weiterleiten Java Basics - Anfänger-Themen 5
A Finde javax.servlet.* nicht Java Basics - Anfänger-Themen 6
G JSP, Applet oder Servlet? Java Basics - Anfänger-Themen 8
0x7F800000 Servlet ruft Servlet auf: Wie ServletRequest erstellen? Java Basics - Anfänger-Themen 6
0x7F800000 Servlet: wo bekommt man die eigene adresse? Java Basics - Anfänger-Themen 6
O Weiterleitung in einem Java-Servlet Java Basics - Anfänger-Themen 5
O Jar-Archiv im Servlet verwenden Java Basics - Anfänger-Themen 3
G Servlet Package wo herunterladen? Java Basics - Anfänger-Themen 2
G doGet und doPost im Servlet nicht überschrieben Java Basics - Anfänger-Themen 9
P Servlet unterschiedliche Server Java Basics - Anfänger-Themen 2
W Servlet - out of memory Java Basics - Anfänger-Themen 7
W servlet imports nicht unterstützt Java Basics - Anfänger-Themen 3
F Applet --> Servlet --> Applet Java Basics - Anfänger-Themen 2
K Problem mit javax/servlet/http/HttpServletRequest.java Java Basics - Anfänger-Themen 2
J Servlet Error Java Basics - Anfänger-Themen 11
D Aus Anwendung Zugriff auf ein Servlet Java Basics - Anfänger-Themen 5
P konsolen ausgabe bei servlet Java Basics - Anfänger-Themen 2
S Methoden aus einem Servlet in einer JSP verwenden Java Basics - Anfänger-Themen 5
T Wo Daten ablegen für mehrere Servlet-Instanzen? Java Basics - Anfänger-Themen 2
G import javax.servlet cannot be resolved Java Basics - Anfänger-Themen 1
Z Wo wird ein Servlet gespeichert ? Java Basics - Anfänger-Themen 2
I eine Klasse aus der Jar-Datei aus dem Servlet starten Java Basics - Anfänger-Themen 4
N Probleme mit import von javax.servlet.* Java Basics - Anfänger-Themen 3
T komplexe Strukturen in Servlet-Context speichern möglich? Java Basics - Anfänger-Themen 5
P Servlet wird nicht gefunden Java Basics - Anfänger-Themen 4
A fileupload mit servlet Java Basics - Anfänger-Themen 6
P asynchrone Kommunikation Applet Servlet mit RMI möglich Java Basics - Anfänger-Themen 4
G Übergabe Variablen von Servlet zu JSP? Java Basics - Anfänger-Themen 4
G Formularübergabe in Servlet endet mit null. Java Basics - Anfänger-Themen 2
S Jakarta FileUpload Servlet funktioniert nicht Java Basics - Anfänger-Themen 17
G Servlet gibt über request nur null zurück Java Basics - Anfänger-Themen 3
G problem mit servlet import Java Basics - Anfänger-Themen 4
W servlet nicht gefunden Java Basics - Anfänger-Themen 8
R Servlet - JSP Java Basics - Anfänger-Themen 2
G Servlet geht nicht Java Basics - Anfänger-Themen 5
G hilfe jsp/servlet,jdbc api running on tomcat server+webProxy Java Basics - Anfänger-Themen 8
G Servlet aus programm abfragen Java Basics - Anfänger-Themen 9
H JSP Kein Durchblick. Servlet <-> JSP Java Basics - Anfänger-Themen 7
I Bean<>Servlet ? Java Basics - Anfänger-Themen 6
D Datentransfer via Servlet Java Basics - Anfänger-Themen 2
M Applet sendet daten an servlet und servlet wieder an applet Java Basics - Anfänger-Themen 5
M Servlet position bestimmen Java Basics - Anfänger-Themen 3
J Servlet - Datei auf Server speichern und Ausgabe Java Basics - Anfänger-Themen 5
G Servlet wird nicht importiert? Java Basics - Anfänger-Themen 3
C Servlet & tomcat 5.0.28 Java Basics - Anfänger-Themen 7
S Servlet-Anfänger Java Basics - Anfänger-Themen 4
G Mein Servlet ist "not available" Java Basics - Anfänger-Themen 12
M Kann neues Servlet nicht hinzufügen Java Basics - Anfänger-Themen 5
D Beispiel-Servlet erstellen Java Basics - Anfänger-Themen 4
H Unterbrochener Link im Fomular bei Servlet-Aufruf Java Basics - Anfänger-Themen 4
E Webshop-Servlet: Problem beim Speichern der Bestellmenge Java Basics - Anfänger-Themen 3
M hilfe :} möchte servlet daten erfasssen-> hashmap speiche Java Basics - Anfänger-Themen 3
Z Servlet/Tomcat Problem Java Basics - Anfänger-Themen 3
E Threads Synchronisationsproblem Java Basics - Anfänger-Themen 5
K Habe ich ein Synchronisationsproblem ? Java Basics - Anfänger-Themen 25

Ähnliche Java Themen

Neue Themen


Oben