# AJAX oder Servlets



## DarkGuardian (20. Mai 2008)

Hallo zusammen

Es ist bei mir leider schon etwas her, dass ich was mit Java umgesetzt habe und mit EE habe ich noch gar nicht gearbeitet. Nun steht aber ein Dienst an, den ich mit JEE und einem Webserver umsetzen will. 

Dieser Dienst nimmt Messdaten über eine Netzwerkschnittstelle entgegen und bereitet diese zur Einsicht über einen Browser auf. Ich weiß noch nicht, was für ein Browser das sein wird, so dass ich erst mal davon ausgehe, dass dieser nur HTML kann (ich hoffe auf mehr, aber bisher weiß ich es nicht).

Nun soll der Bediener über den Browser Aktionen anstossen können. Neben einer Auswahl von verschiedenen Messdatenbereichen (was direkt über Links machbar ist) soll er auch Werte bzw. Texte setzen können. Diese Daten müssen dann aber über die Datenschnittstelle wieder an den Sender weitergeleitet werden. Zudem sollen die angezeigten Messwerte automatisch aktualisiert werden (vermutlich mit 1Hz).

Nun überlege ich, wie ich das Ganze am besten umsetzen kann. Beim Webserver bin ich quasi komplett frei und da vorraussichtlich nicht mehr als 5 Clients damit verbunden sind (lokaler Aufbau) gibt es auch da keine Performacevorgaben (zumindest keine, die nicht eh jeder Webserver schaffen sollte).

Ansich würde ich gerne die Arbeit komplett vom Webserver erledigen lassen, so dass der Browser wirklich nur anzeigt. Allerdings bin ich mir nicht so sicher, ob ich z.B. mit Servlets die automatisierte Aktualisierung umsetzen kann. Brauche ich dafür zwingend etwas wie AJAX? Ich bin schon auf die Metaeinstellung http-equiv="refresh" gestoßen, wobei diese wohl nicht von allen Browsern unterstützt wird. Aber ansich könnte ich damit die Aktualisierung erledigen. Leider befürchte ich, dass dabei die komplette Seite neu geladen wird, was natürlich unschön aussieht.

Ich hoffe, dass ihr mir für meinen ersten Ansatz Tipps geben könnt, damit ich nicht schon im Vorfeld auf die "falsche" Technik setze und mir damit das Leben unnötig schwer mache.


----------



## javasimon (20. Mai 2008)

ja ganz recht, ein servlet kann keinen refresh auf dem client anstossen, das muss dieser schon selber machen! du könntest eine kombination von servlet oder webservice auf dem server und html mit javascript / ajax auf dem client nehmen. dann könntest du mit einem timer die daten vom server neu laden und auf dem client aktualisieren. so werden nur die daten übermittelt die du auch wirklich brauchst. 1 Hz finde ich allerdings ein bisschen viel...!

gruss simon


----------



## DarkGuardian (20. Mai 2008)

OK, also muss ich mal sichten, was für einen Browser dabei eingesetzt wird und was dieser kann. Davon kann ich dann erst meine Entscheidung abhängig machen, wie die Aktualisierung umgesetzt werden kann. Wobei mir aufgefallen ist, dass das Setzen von Werten durch den User wohl auch nicht durch HTML alleine umgesetzt werden kann (oder?). Da muss ich erst das Einsatzgebiet genauer definieren bzw. sichten. ("Refresh" lasse ich erst mal außen vor, denn auch da weiß ich nicht, ob der Browser das kann).



> 1 Hz finde ich allerdings ein bisschen viel...!


Naja es handelt sich um eine Art Überwachungssystem im einem lokalen Netzwerk. Da müssen die Daten schon recht aktuell gehalten werden und eine Aktualisierung jede Sekunde sollte nun wirklich kein aktuelles System überfordern. Oder kannst du deine Aussage da noch etwas verfeinern?


----------



## DarkGuardian (20. Mai 2008)

> Wobei mir aufgefallen ist, dass das Setzen von Werten durch den User wohl auch nicht durch HTML alleine umgesetzt werden kann (oder?).



OK, diese Aussage muss ich wohl revidieren. Denn natürlich kann ich über entsprechende Formulare auch eine Wertübergabe machen, wobei ich da noch nicht weiß, wie sehr ich dabei eingeschränkt bin. Aber dazu recherchiere ich noch.


----------



## javasimon (20. Mai 2008)

naja, du weisst ja wie das mit den netzwerken so ist, die können schon mal ein bisschen hängen zwischendurch... aber du kannst es ja mal versuchen mit 1 update pro sekunde, kann auch gut sein, dass es ohne probleme geht. und wenn dann mal eine datenladung "verlohren" geht ist das ja dann auch nicht so schlimm, oder?


----------



## @x.l (21. Mai 2008)

Ich finde eigentlich die Kombination AJAX/Servlets recht komfortabel. Schreib dir einfach Methoden für die grundlegenden Dinge (XML-Dokument erstellen/auswerten, Request senden, ...)

Und was die Refresh-Rate betrifft - solange die Anfragen nicht zuviel vom Server abverlangen (größere Datenbank-Abfragen/Änderungen, etc.) sollte das eigentlich klappen.


----------



## DarkGuardian (21. Mai 2008)

Danke für die Rückmeldungen.

Insgesamt sehe ich es unproblematisch, da es sicher eher um einen Gateway handelt, der die Messdaten für einen Browser aufbereitet. Daher werden keine aufwändigen Aktionen bei einer Anfrage ausgeführt. Und zudem scheint auch eine Aktualisierung alle 5 Sekunden noch OK, ich möchte es nur nicht schon so früh im Projekt festlegen (das Intervall kann ich ja immer noch erhöhen).

Der große Brocken ist aber, dass ich auch eine Version brauche, die nur mit HTML arbeitet. Zwar ist klar, dass dabei gewisse Aktionen dann nicht mehr bzw. nicht so komfortabel funktionieren. Aber falls der Browser kein JavaScript o.Ä. bereitstellt, muss der Bediener trotzdem Messdaten und ein paar weitere Aktionen einsehen können. Das würde ich dann über eine Abfrage auf der Startseite machen, wo der Bediener zwischen mit und ohne JavaScript wählen kann.


----------

