Request timeout Problem mit der post-rest-API-Anforderung
Meine Anwendung-Umgebung Tomcat 7.0, JDK 1.7. Ich bin mit Jersey für die REST-API. Eine unserer post-Typ-REST-API-Anforderung dauert die Bearbeitung länger als 3 Minuten, und es ist nur ca Zeit, kann es mehr als 3 Minuten. Dann wir senden die Antwort zurück an den client, wenn unser Anfrage-Verarbeitung abgeschlossen ist. aber hier Anfrage Verarbeitung nehmen, 3 Minuten also ich hab die request time-out auf der client-Seite , und ich bekomme keine Antwort vom server , als ich erwartete Erfolg Antwort
Request-Verarbeitung auf dem server ist wie folgt:
Starten Sie die Anfrage
- Insert details zu db-Tabelle [dieser Prozess ist, Zeit in Sekunden]
- Kopieren von Dateien auf remote-computer-server [dieser Prozess unter 3 Minuten]
- Update/aktiv, werden die Dateien [dieser Prozess ist, Zeit in Sekunden]
- Senden der Antwort an den client
Ende der request-Verarbeitung
Alle oben genannten Prozess muss in der Transaktion , so können wir nicht entfernen Sie alle der oben genannten Prozess,
Hatten wir bereits verbessern, die beste Leistung für Schritt 2 des Prozesses , und es geschieht nur, wenn wir fordern, mit der mehr als 1 gb Größe Datei.
Ab sofort für die temporäre Lösung, die wir hatten, erhöhen Sie den timeout-Wert, welcher konfiguriert ist, die in der Apache-server.
Nun bin ich auf der Suche nach der Lösung für mein Problem, mit den folgenden Ansatz:
- Mir empfehlen jede Entwicklung oder Umsetzung von Strategien, die beheben kann, mein Problem und es sollte erwartet werden, wie beschrieben, mich?
- Wie kann ich die angehen, die request time-out-Problem?
- Der Suche nach der Lösung, die dies dem Kunden von der server-Seite , wenn die Antwort fertig ist?
- Der Suche nach der Lösung, die nicht in der Nähe der Verbindung zwischen dem client und dem server mit dem Jersey-REST-API-Implementierung?
Dank & Grüße
Yatin Baraiya
Du musst angemeldet sein, um einen Kommentar abzugeben.
wie ich denke, zu lösen, die mein Problem mit dem folgenden Ansatz.
Prozess-Implementierung Schritt, um das mein Problem
1.Zuerst Sendet eine Anfrage an den server ==========> Server sofort senden die Antwort an den client zu erzeugen einige Id und starten Sie den lange Laufenden Prozess durch anderen thread im gleichen Prozess.
2.Auf der client-Seite zunächst erhalten Sie die erste request-response und wartet für einige Sekunden und dann wieder senden andere Anforderung an den server für die lange Laufenden Prozess status prüfen====> Server bekommen die zweite Anfrage und Antwort an den client über den status von lang Laufenden Antwortstatus mit dem Versand in Bearbeitung oder fertig
3.Wenn Kunden erhalten die Antwort :in-progress
4.Dann client warten Sie einige Sekunden und wieder senden Sie die Anfrage für den status prüfen ===> server Sendet Antwort an getan
5.Wenn Kunden erhalten die Antwort :Getan
bedeutet hier verwalten wir die Transaktion von der client-Seite mit dem senden der mehreren Anfrage an den server und bestätigen Sie den Vorgang erfolgreich abgeschlossen ist oder nicht , dann beginnen wir den Prozess der nächsten Aktion.
Mit dem obigen Ansatz haben wir die Transaktion Prozess ,Lassen Sie mich wissen, ist es mein Ansatz, um das zu lösen, sagte Thema , ist es genug oder keine änderungen erforderlich ist, in dieser Lösung?