2013-05-24 10 views
5

Ich stolperte in ein wirklich seltsames Problem, bei dem die HTTP-Anforderungen eines Browsers anscheinend vom einfachen Connector verworfen wurden, der von einem Restlet-Server verwendet wurde.Restlet mit einfachen Connector Anfragen löschen?

Setup Server:

  • Restlet 2.1.2 Server
  • Restlet-Einfache Erweiterung (kommt mit Simple 4.1.21)
  • Restlet-Krypto-Erweiterung für
  • Digest-Authentifizierung

Die Der Server liefert Webseiten an Browser und verwendet JavaScript's XMLHttpRequest, um Updates zu holen. Einige dieser XMLHttpRequests werden jedoch nicht abgeschlossen. Der Javascript-Debugger für Chrome zeigt den Status "fehlgeschlagen" für diese Dateien an. Der Debugger von Firefox protokolliert eine Fertigstellungszeit ohne einen HTTP-Statuscode und eine aufgezeichnete Antwort. Ein Paket-Sniffer zeigt an, dass die problematischen Anforderungen tatsächlich an den Server gesendet werden, der Server jedoch nie antwortet. Das Debugging zeigt, dass diese Anfragen niemals unseren Servercode erreichen.

Ich habe das Problem mit Firefox, Chrome sowie IE verifiziert. Alle drei Browser (neueste Versionen) haben dieses Problem. Außerdem hat jeder Browser wiederholt und reproduzierbar Probleme mit genau den gleichen Anforderungen. Dieser Satz von Anfragen unterscheidet sich jedoch zwischen den drei Browsern.

Was wirklich seltsam ist, dass das Problem Oberfläche tut, wenn der Computernamen des Servers verwendet (Testläufe auf einem LAN), aber nicht, wenn das IP-Adresse des Geräts verwendet wird. Wenn Sie von der Digest-Authentifizierung zur Standardauthentifizierung zurückkehren, wird das Problem ebenfalls behoben und der einfache Connector wird durch Jetty ersetzt.

Ich neige jetzt zu Jetty wechseln, aber ich würde noch gerne wissen, was los ist. Hat jemand schon mal so ein Verhalten gesehen oder hat man eine Vorstellung davon, was hier schief läuft?

+0

Sie sollten Ihren Code zur Konfiguration von Restlet mit der Authentifizierung veröffentlichen. – gma

Antwort

0

Wir stießen vor kurzem ein ähnliches Problem mit Restlet, die auch in einigen Anfragen führten nicht abgeschlossen. Das Problem war ein nicht synchronisierter Kartenzugriff innerhalb von Restlet, der bereits behoben wurde (https://github.com/restlet/restlet-framework-java/issues/753).

Wenn Sie eine oder mehrere Threads sehen verursacht hohe CPU-Verkehr, kann dies darauf hindeuten, dass Sie von diesem Problem betroffen sind.

Wenn Ihr XMLHttpRequests kommen in parallel könnten Sie betroffen sein.

+0

Dieses spezielle Problem würde wahrscheinlich zu zufälligen Ausfällen führen. In meinem Fall ist jedoch der Satz von Anforderungen, die ignoriert werden, immer reproduzierbar gleich. Welches Set dies ist, variiert jedoch je nach Browser. So vermisst firefox Antworten auf einen Satz von Anfragen, IE zu einem anderen Satz und Chrome zu einem anderen Satz. –

Verwandte Themen