# Servlet zyklisch aktualisieren



## Nicole81 (21. Feb 2008)

Hi Jungs, 

ich habe da mal wieder ein Problem das mich zum verzweifeln bringt vielleicht könnt ihr mir ja weiterhelfen  :bahnhof: 

Servlet A erstellt einen Content X basierend auf dem Zustand eines Objektes O.
Servlet A hat weiterhin einen Button mit diesem wird Servlet B aufgerufen.

Servlet B startet Objekt O, so dass dieses seinen Zustand in gewissen Zeitabständen ändert.

Nun soll Servlet A zyklisch aktualisiert werden um die Änderungen an Objekt O darzustellen.

Wie bekommt man das hin?

Habe bereits versucht in Servlet B einen Thread zu starten, der bekommt das response Objekt übermittelt und führt alle paar Sekunden ein sendRedirect aus. Jedoch bekomme ich immer eine NullPointerException, da das response Objekt anscheindend zerstört wird, sobald das Servlet beendet wurde...

Hat da jemad eine Lösung?

Danke Männer, Liebe Grüße


----------



## karatekid (22. Feb 2008)

Hi Nicole,

die Infos zu deinem Problem sind etwas dürftig. Soll die Änderung pro Session oder Sessionübergreifend sichtbar sein ? Was auf keinen Fall geht, dass die beiden Servlets miteinander kommunizieren. Evtl. brauchst du ja auch nicht 2 Servlets.

Nimm ein Servlet, starte darin einen Thread der dein Object verändert. Das Object selbst wird von einem Service (Singleton) verwaltet. 

d.h. der Thread sagt dem Service -> ändere mal das Object.
Dein Servlet ruft dann auch den Service und sagt -> gib mal den Inhalt vom Object.

Wie das Servlet sich selbst zyklisch aufruft, wusste ich auch mal. Da müssten sich mal die Frontend Experten hier outen. Da gibt es eine Möglichkeit per HTML.

Warum muss es eigentlich ein Servlet sein ? Zufall oder wird es eine Webanwendung ?

Gruß KK


----------



## byte (22. Feb 2008)

Du kannst nicht mehrmals im Servlet sendRedirect machen. Das Stichwort heisst hier AJAX. Dort gibts zwei Möglichkeiten der Realisierung: Polling oder Server Push. Beides ist aber unschön, wenn man dabei einen neuen Request der gesamten Seite macht. Der User könnte gerade in dem Moment Eingaben auf der Seite machen.


----------

