Frage

Ich bin eine Funktionalität in meiner Web-app Implementierung, so dass ein Kunde den Bericht einige Daten ein und klicken auf den Submit-Button erzeugen kann.

Das Problem ist, dass die Berichterstellung viel Zeit in Anspruch nimmt und der Bericht möglicherweise nicht erzeugen, wenn der Benutzer Daten falsch eingegeben wird.

Die vollständige Bericht Generation Aufgabe hat viele Teilaufgaben und ich möchte, wenn der Client drückt einreichen dann knapp unterhalb dieser Seite ich den Status / Fortschritt der Berichterstellung Aufgaben in verschiedenen Teilaufgaben aufgeteilt zeigen will, wie

- Validating input data ------ Done
- Fetching the data     ------ In Progress
 and so on,

Wie kann ich das Struts2, jQuery in der Web-Schicht unter Verwendung erreichen?

Jede Hilfe wird sehr geschätzt.

Danke

War es hilfreich?

Lösung

Wir hatten ein ähnliches Problem. Die Transaktion erfolgt in der Regel 20 Sekunden, manchmal mehr als eine Minute. Wir dachten, es wäre einfache Lösungen, aber wir am Ende mit einem Schema wie diese auf,

  1. Wenn die lange Laufanforderung empfangen wird, eine Sitzung erstellt und ein neuer Thread laichen die Anfrage zu bearbeiten.
  2. Eine Seite wird sofort mit Text zurückgegeben, um „Das Sammeln von Daten ...“. Die Seite enthält einen Timer selbst jede Sekunde zu aktualisieren. Die Reload-URL enthält die Session-ID (wir verwenden Http nicht) in der Abfrage-Parameter.
  3. Wenn der Aktionshandler die Anforderung mit einer Sitzungs-ID sieht, weiß, dass es die Sitzung gestartet wird, überprüfen Sie eine Zustandsgröße durch den Arbeitsfaden aktualisiert. Wenn es nicht getan hat, aktualisiert er die Seite mit neuem Status „Abrufen von Daten aus DB1 ...“. Es flackert, wenn dies als Reload durchgeführt wird. Wenn Sie sich interessieren, können Sie AJAX verwenden, um den Status zu aktualisieren.
  4. Wenn der Arbeits Thread getan wird und die Seite ist bereit zu liefern, gibt den Aufruf einfach das Ergebnis aus.

Wir liefen in einiges Problem mit dem Lastenausgleich. Für die Regelung funktioniert, muss jeder reload auf den gleichen Server zurückkommen. Glücklicherweise unterstützt der Lastenausgleich sticky-Routing basierend auf unserer Session-ID.

Andere Tipps

Werfen Sie einen Blick auf die Struts2 ExecuteAndWait Abfangjäger. http://struts.apache.org/2. x / docs / execute-and-wait-interceptor.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top