Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Indy und Tomcat, richtiges Verhalten bei Fehlern?

  Alt 3. Dez 2006, 15:34
Hallo!

Wir haben hier einen Tomcat Server und einen Delphi-Client in einem lokalen Netz. Ich hab die Indy-Komponenten (TIdHTTP) um mit dem Tomcat zu reden. Die Verbindung ist session-orientiert, sie (die Verbindung) wird vom Tomcat nach 10 Sekunden idle geschlossen.

Leider erhalte ich die berühmt berüchtigten Fehlermeldungen "EIdConnClosedGracefully" und "Socket Error 10053". Sehr selten kommt 10054". Ich weiss im Prinzip, was sie bedeuten (Google sei Dank).

Wenn der EIdConnClosedGracefully-Fehler kommt (der laut Indy-Doku eine echte Exception ist), klappt gar nichts mehr. Nur wenn ich dem Tomcat alle 9 Sekunden etwas zu tun gebe, schließt er (bzw. das Java-Modul) die Verbindung nicht und dann haben wir auch kaum Probleme. Ab und an ein 10054 oder ein vereinzelter 10053...

Meine Frage lautet nun: Wie setze ich die vom Server einseitig abgebrochene Verbindung wieder korrekt auf, bzw. wie soll sich der IdHTTP-Client vor einem Get/Post verhalten? Soll ich aufs geradewohl Daten schicken und per Exceptionbehandlung auf die Fehler eingehen? Und wenn ja, wie?

Delphi-Quellcode:
Try
  // Hier erstmal prüfen, ob eine Verbindung besteht?...
  aData := fHttp.Get(sURL);
Except
  On EIdConnClosedGracefully Do
    .... <<---
  On EIdSocketError Do
    Case E.LastError Of
      10053 : .... <<---
      10054 : .... <<---
    end
End;
Ach ja, der TIdHTTPClient ist nicht sonderlich konfiguriert, also unter Host etc. ist nix eingetragen. Sollte ich im Host explizit die Server-IP eintragen und ein Connect starten?

Leute, was LAN/TCP/HTTP etc. angebelangt, bin ich eine hohle Nuss, also bitte bitte, helft mir.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat