Struts Fortschritt bei lang andauernden Operationen Visualisieren

Thomas Darimont

Erfahrenes Mitglied
Hallo!

ich habe gerade auf der Struts Mailingliste ein interessantes Problem entdeckt.
Es ging um die Frage, wie man dem Benutzer bei lang andauernden Operationen einen Fortschritt visualiseren könnte.

Ein Vorschlag war dann der, dass man sich zusätzlich zu der Aktion welche die eigentliche Arbeit verrichtet eine weitere WaitAction erstellt welche dann von einer JSp-Seite immer wieder aufgerufen werden kann -> Per Meta-Refresh. Dabei unterhalten sich die WorkAction und die WaitAction über bestimmte Session Attribute.

Der Ablauf wäre dann wie folgt:
1) User ruft WorkAction auf
1a)lang andauernder Task wird im Hintergrund gestartet (zbsp. Per Quarz)
1b) WorkAction leitet auf WaitAction weiter
2) WaitAction überprüft SessionParameter und ermittelt Fortschritt des Vorgangs
2a) ist der Vorgang noch nicht abgeschlossen wird die Seite wait.jsp aufgerufen
-> Diese enthält nun einen <meta http-equiv="refresh" content="3;URL=waitAction.do">
-> tag welcher die WaitAction in einem bestimmten Intervall erneut aufruft.
2b) Merkt die WaitAction, dass der Vorgang beendet ist wird auf eine Ergebnisseite weitergeleitet.

Dieser Mechanismus erinnert an eine Art Polling und man sagt ja das Polling meistens keine gute Idee wäre. Gibt es da noch eine Alternative?

Anhang: Beispiel Eclipse Projekt

Gruß Tom
 

Anhänge

  • StrutsWaitExample.zip
    14,5 KB · Aufrufe: 30

Neue Beiträge

Zurück