Servlet Container beendet threads nicht

TheGreenDragon

Erfahrenes Mitglied
Hi,

hab ein riesen Problem... wie immer ^^ ... naja es geht um Folgendes. Wenn mein Web-Service starte nimmt mein Servlet anfragen entgegen, erstellt Objekte die wiederum was machen und sendet am Schluss eine Anfrage zurück. Funktioniert auch alles wunderbar... ABER wenn der Service so ein Tag mal läuft, werden immer mehr Threads erzeugt bis dann ein Out-Of-Memory entsteht. Letztens waren es 4000.... -.-
Ich weiß das es eine destroy() Methode gibt, aber die ist doch nicht unbedingt notwendig oder?
Wie macht man es denn für gewöhnlich oder kann dieses Verhalten andere Ursachen haben?

Gruß
Green
 
Hat keiner eine Ahnung? :confused:
Bin für jeden Vorschlag dankbar :(

Edit 1: Ich habe es nun mit dem Befehl Thread.currentThread().interrupt(); versucht, welcher kurz nach senden des response ausgeführt werden sollte. Leider brachte der Befehl gar nichts... -.-
 
Zuletzt bearbeitet:
Hallo,

welchen Servlet Container verwendest du denn?
Bei den meisten Servlet Containern kannst du den Thread Pool Konfigurieren. Dort würde ich in deinem Fall die Anzahl der gepooled-ten Threads runtersetzen und / oder das Timeout für diese Threads senken.

Gruß Tom
 
Hi,
danke für den Tipp. Das Problem konnte ich nun finden und beseitigen. Der Fehler bzw. das Problem lag in meinen Konstruktoren. Dort habe ich nämlich bei jeder einzelnen Klassen die Anweisung
Code:
DOMConfigurator.configureAndWatch(...);
drin gehabt. Somit wurde bei jeder Objekterstellung ein Thread gestartet der meine log4j Konfiguration überwacht und sich nicht mehr beendet.
Es reicht jedoch die oben genannte Anweisung nur im Servlet Konstruktor zu implementieren.

Beste Grüße
Green
 

Neue Beiträge

Zurück