wie push der Daten an die jsp-out beantragt, für die alle 2 Sekunden?
Will ich push die Daten an die jsp für jede 2 Sekunden, mit aus-client es anfordert.
Ich bin mit Spring mit Hibernate hier.
Ich bin keine google-maps-marker, und ich möchte zur Aktualisierung der marker Position alle 2 Sekunden durch abrufen der Daten aus der Datenbank, aber ich getan haben, bekommen die Daten von der Datenbank für jede 2 Sekunden, aber ich bin nicht in der Lage zu drängen, dass die Daten, die auf dieser jsp.
@Scheduled(fixedRate = 2000)
public void getData(){
//TODO Auto-generated method stub
DeviceDetails deviceDetails = realTimeDataDAO.getDeviceDetails(deviceId);
System.out.println(deviceDetails);
}
Ich habe auf dem display einige Daten nach jede 2 Sekunden. Kann mir jemand sagen wie das geht?
jeder weiß, über Komet Ajax-Push-Technologie, wird es in diesem Szenario funktionieren?
Einfach beantwortet - es wäre hilfreich, wenn Sie sagte, was app-server, den Sie verwenden, oder wenn Sie flexibel sind, auf denen zu wählen.
InformationsquelleAutor Ramesh Kotha | 2011-12-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre beste Wette mit Feder ist, die zum speichern der Ergebnisse der geplanten Abfrage in eine bean im Arbeitsspeicher, dann ein weiterer request-scope-bean erhalten, das gespeicherte Ergebnis in einer Methode, die in web zugänglich, und senden Sie es als text (oder JSON). Alternativ könnte man die Abfrage der DB jedesmal, wenn ein update verlangt wird.
Dann können Sie eine zeitgesteuerte asynchrone Anfrage von Ihrer Seite (Sie können auch verwenden, YUI Connection Manager), Lesen Sie die Antwort und verwenden Sie die panTo-Methode von google.maps.Karte zu aktualisieren Sie Ihre Position auf der Karte.
Wie Sie sehen können, wird die Lösung aufgeteilt in einen Java-und JavaScript-Teil.
Für die Java-Seite, müssen Sie erstellen einen controller, der die Abfrage ausführt, um die Datenbank - (oder noch besser, die Delegierten, die Aufgabe auf eine andere Ebene) und gibt die Ergebnisse als JSON, die Sie verwenden können,http://spring-json.sourceforge.net/. Es ist ein bisschen komplexer im Frühling, so möchten Sie vielleicht stattdessen erstellen Sie ein einfaches servlet, das die Daten zurück.
Für die Javascript-Seite, sobald Sie eine Arbeit Endpunkt, gibt die JSON-Daten, mit YUI Connection Manager und die google maps api:
Ich fügte hinzu, einige Richtlinien und Beispiel-code, hoffe es hilft
vielen Dank @Slash, aber es ist eine andere Weise, die andere als YUI, becoz ich habe keine Kenntnisse über.
haben Sie Kenntnis von einem JavaScript-framework? denn ich glaube nicht, Sie können dies tun, mit Feder allein, der Frühling ist server-side, damit Sie können tasks planen, ausgeführt werden, diese wird aber nur passieren, auf dem server soweit ich weiß. Dieser code zum Beispiel nutzt JQuery anstelle von YUI: blog.springsource.org/2010/01/25/...
ich habe Kenntnisse über javascript...
InformationsquelleAutor Slash
Haben Sie eine Reihe von Auswahlmöglichkeiten.
Polling - wie bereits in anderen Antworten, die Sie könnte einfach javascript auf der client ständig den server abfragt, alle 2 Sekunden. Dies ist ein sehr gemeinsames Konzept ist einfach und funktioniert in den meisten Browsern. Zwar nicht so skalierbar wie einige andere Ansätze setup richtig dies sollte können Sie immer noch einfach skalieren, um moderate Mengen (wahrscheinlich mehr Nutzer als die, die Sie haben!).
Long polling - Auch bekannt als Comet dies ist im wesentlichen eine lange lebten Anfrage. Die Umsetzung dieser variiert in Abhängigkeit von Ihrem app-server. hier finden Sie Tomcat: http://wiki.apache.org/tomcat/WhatIsComet oder Jetty-bundles einige Beispiele.
HTML-5-Lösungen während das web ist traditionell request-response - basierte -, event-basierte Bearbeitung ist Teil der HTML 5 Spezifikation. Wie Sie Ereignisse scheinen nur einen Weg (server -> client) Betrachten die Verwendung von Ereignis-Quellen. Siehe: http://www.html5rocks.com/en/tutorials/eventsource/basics/ oder wieder die Steg Beispiele. Einschränkungen sind hier nur moderne Browser und einige app-Server unterstützen diese Methoden - wie z.B. Apache nicht nativ unterstützt websockets.
Also zu summieren, - mein Gefühl ist, dass Ihre Bedürfnisse und für die Einfachheit polling-Ansatz ist gut - nicht zu viel sorgen zunächst über performance-Probleme.
Wenn Sie möchten, um auf dem neuesten Stand, lernen neue Sache, und Sie haben die Kontrolle über Ihre app-server und frameworks, dann würde ich gehen für die HTML-5-Konzept.
Komet ist eine Art half-way-Haus zwischen diesen beiden.
InformationsquelleAutor Pablojim
Der beste Weg, es zu tun ist, um die client-senden Sie eine neue Antrag alle 2 Sekunden und zeigt dann die neuen Daten.
Seit Sie HTTP verwenden, ich nehme an, Sie verwenden Sie javascript auf der client-Seite, so müssen Sie einen timer im javascript-Feuer alle 2 Sekunden, und dann lassen Sie die javascript ausführen eines ajax-call an den server, um die Daten, die kann Sie dann anzeigen.
InformationsquelleAutor MTilsted
Versuchen, eine TimerTask oder ThreadExecutor (Blick auf die geplante Umsetzung).
java2s.com/Code/Java/Development-Class/...
Ich glaube nicht, dass dies wirklich hilft, da es nicht angehen, die Anzeige der Daten für den Benutzer
InformationsquelleAutor duffymo
Gut, wenn Sie möchten, implementieren Sie obige Lösung in einer web-Applikation, ich bin nicht sicher, aber ich denke, man kann nicht tun es auf diese Weise. HTTP ist ein Anfrage/Antwort-Protokoll, und wenn der server fertig stellen, das senden einer Antwort, die er nicht initiieren, die auf seine eigene senden einer neuen Antwort. In kurzen Worten: eine Anforderung vom client eine Antwort vom server.
Ich denke, dass Sie verwenden sollten, AJAX (asynchrone Javascript-Anfragen), so bitten den server alle 2 Sekunden neue Daten und, wenn nötig, aktualisieren Sie die DOM (Homepage HTML-tags Struktur).
Es sieht vielleicht aus wie eine schlechte Idee, aber es ist eine gemeinsame Lösung in einem web-Anwendungen 🙂
Sie wäre korrekt gewesen vielleicht vor zehn Jahren. Die ursprüngliche Spezifikation für HTTP ist, wie du sagst, aber die Prävalenz und die Allgemeine Anforderung für die push-Funktionen hat dazu geführt, Dutzend Komet, wie server-push streaming-Implementierungen auf nahezu jeder server-Plattform. Server-Sent-Events und Web-Sockets werden nur weiterhin die Entwicklung, auch die beiden geschickt in Handarbeit zu koexistieren auf http/port 80.
InformationsquelleAutor M. Hryszczyk
Ich habe gute Erfahrungen mit WebSockets. Sehr schnell, geringer overhead-bi-direktionale-Protokoll zwischen server und browser. Nicht sicher, was Ihr backend aber Jetty unterstützt es sehr gut. Einfach nur einen timer-Prozess auf dem backend, das würde iterieren über alle aktiven WebSockets Sitzungen und push-updates. Es gibt viele Beispiel im Netz, wie Websockets.
Dinge im Auge zu behalten:
Je nach Ihren Anforderungen, es möglicherweise oder möglicherweise nicht akzeptabel sein.
Gibt es einige Projekte wie Atmosphäre, die versucht, abstrakte browser/server, Unterschiede in der websockets-Unterstützung mit graceful fallback auf Kometen. Es könnte mehr als einen Blick Wert.
InformationsquelleAutor maximdim
ajax und commet funktionieren sollte. Sie müssten, um zu finden, die entweder finden, oder schreiben Sie ein Java-server-Komponente, die Sie dann schieben Sie die Daten-und auch eine JavaScript-client-Komponente, "empfangen" die Daten, die im browser des Benutzers.
Der schwierigste Teil wird sein, schreiben benutzerdefinierter JavaScript-Code für den client, die updates die Teile der Seite, die Sie wollen. Sie werden nicht in der Lage zu verwenden JSP-tags, da Sie nur dann ausgewertet, wenn die Seite geladen wird.
u kann mich leiten, indem Sie klare Vorstellung bitte..
Ich habe nicht verwendet, Kometen-oder JavaScript-genug, um sich wohl fühlen zu geben Sie eine benutzerdefinierte Beispiel. Jedoch habe ich finden dieses Beispiel sieht werden die Grundlagen für das, was Sie tun könnten. [link]blogs.oracle.com/swchan/entry/a_simple_comet_example_hidden In der es Sie haben einen gemeinsamen Zähler, dass jeder eine website anzeigen, können Inkrement-und dann jeder, der es sieht. Für Ihr problem würden Sie rufen Sie die "notify ()" - Methode alle 2 Sekunden, und dann anstatt vorbei, entlang der Graf-pass entlang der Lage. Endlich in der updateCount () - Methode in java-script müsstest du um die Karte zu aktualisieren. Ich hoffe, das hilft.
InformationsquelleAutor patheros
Müssen Sie zum senden der Daten vom server zum client für alle 2 Sek. Und schon wissen Sie, wie sammeln Sie die Daten für jede 2 Sekunden auf der server-Seite.
Wenn das ist alles, was Sie brauchen, ist die "Ajax-streaming" wird Ihnen helfen. Dies ist auf der client-Seite. Von der server-Seite alle 2 Sekunden, die Sie benötigen, um die Daten zu schreiben und Spülen Sie es.
Suche für diesen Begriff geben Sie viele Beispiele. Aber denken Sie daran, alle modernen Browser verwenden mit einem Ansatz, und alle IE-Browser verwenden-IFrame-Ansatz zu implementieren-streaming.
Im ersten Fall, Sie brauchen, um machen, XHR-Anforderung und einsehen der Antwort und verarbeiten.
Hier sind ein paar Beispiele: (ich did ' T haben Zeit, um durch Sie gehen komplett)
http://ajaxpatterns.org/HTTP_Streaming
http://developers.cogentrts.com:8080/DH_ajax_1.asp
InformationsquelleAutor Pragalathan M
U verwenden können ajax-call.
Wie Sie schreiben Javascript-code aus, senden Sie die Anforderung für jeder 2 Sekunden,aber für dieses dein server sollte schnell reagieren für diese Art von Anforderung.
Nun, ich denke, das wird Ihnen helfen.
InformationsquelleAutor Sam....
Wenn Ihr server bekommt mehr als 1000 Benutzer dann den Anwendungsserver fehl. Ich empfehlen die Verwendung von NON-Blocking Input-Output-Methoden unterstützt, mit der Jetty-Server-nur-host-Anfragen für diesen Zweck hergestellt und verwenden Sie Ihre normale EE-Server für andere Anwendungen.
nicht nach Antworten, für die Sie nicht haben, eine zuverlässige Quelle von Informationen. Ich regelmäßig zu testen, 20.000 clients auf einem einzigen server mit WebSync und server-Cluster regelmäßig zu sehen 4000-6000 gleichzeitige real-world Nutzer.
InformationsquelleAutor Acn