Servlet Socket

lindin

Erfahrenes Mitglied
Hallo,

ich habe ein Servlet, in dem ich ein Socket zu einem anderen Server aufmache, etwas zu dem Server schicke, und dann den Socket wieder zumache!

Das passiert alles in der Methode "doGet", also wenn eine Anfrage kommt!

Der Server beendet aber die Verbindung, wenn ich zu oft hintereinander einen Socket zu ihm öffne!

Jetzt meine Frage:

Wenn ich jetzt den Socket beim ersten Aufruf des Servlets aufmache, und ihn auf lasse, damit immer wieder die Anfragen verarbeitet werden, und ich den Socket einfach während dessen auflasse!
An welcher Stelle muß ich ihn dann wieder zumachen?
Wie ist das mit der "Lebenszeit" eines Servlets?

Man kann ja nicht sagen, daß es irgendwann zerstört wird, und man an dieser Stelle den Socket wieder zumachen könnte!
 
Jetzt habe ioch mal den Socket in der MEthode init() aufgemacht, und einfach nicht mehr zugemacht...

Bei der ersten Anfrage ist der Socket dann noch auf, und die Verbindung mit dem anderen Server stand, bei der nächsten Anfrage jedoch kam dann die Exception, das der Socket zu sei,
wo wird der denn nu zugemahcht?

Ich habe gelesen, daß die Methode destroy() alle Resourcen aus der Methode init() wieder freigibt, und das destroy erst beim "Ableben" des Servlets aufgerufen wird, also wenn man das Servlet vom Server nimmt, oder den Server runterfährt!

Wo wird denn nun mein Socket zugemacht, kann mir das jemand erklären?
 
Original geschrieben von lindin
Jetzt habe ioch mal den Socket in der MEthode init() aufgemacht, und einfach nicht mehr zugemacht...
Bei der ersten Anfrage ist der Socket dann noch auf, und die Verbindung mit dem anderen Server stand, bei der nächsten Anfrage jedoch kam dann die Exception, das der Socket zu sei,
wo wird der denn nu zugemahcht?

Der andere Server beendet die Verbindung nach einer Weile. Connection Timeout
 
Entweder "verschwindet" die Socket Verbindung durch einen Timeout, dadurch dass sie nicht mehr referenziert wird und somit vom GC zerstört wird oder durch explizites Schließen ... Mag sein, dass es noch andere Gründe gibt aber die kenne ich nicht :)

Ein Timeout geschieht standarmäßig nach 5 Minuten oder so .. (bitte nicht erschiessen wenns nicht genau stimmt)
 
Zurück