Aktualisiere Spring Controller

8u3631984

Bekanntes Mitglied
Hallo.

Ich habe folgende Struktur.
Ich habe einen ImageService, ein Imagerepository und einen ImageController.

Der ImageService erzeugt in regelmäigen Abständen Images (diese werden im Repository abgespeichert).
Im Controller kann ich über den Endpoint localhost:8080/images die Bilder anzeigen.

Ich verwende Thymleaf um die Gui zu erzeugen.
Nun möchte ich gerne wenn neue Images erzeugt werden, den Controller dazubringen die Seite neu zu laden.

Kann mir jemand einen Hinweis geben, wie man das macht
 

KonradN

Super-Moderator
Mitarbeiter
Das Problem ist erst einmal, dass der Server bei http ja in erster Linie auf Requests antwortet. Der Client muss also eine Anfrage machen und der Server antwortet dann.

Daher ist eine Lösung, dass der Client einfach pollt. Also regelmäßig Anfragen sendet um nach Updates zu fragen.

Man könnte diese Lösung noch anpassen, so dass der Server bei so Anfragen verzögert antwortet. Damit hält der Server aber viele offene Requests und das dürfte schlecht skalieren. Aber sobald sich etwas ändert, dann könnte der Server halt die offenen Requests direkt beantworten.

Eine weitere Idee kann sein, dass man ein Protokoll wählt, das eine Kommunikation in beide Richtungen zulässt. Da kann es viele Ideen geben. Wenn der "Client" ein eigenständiger Server ist, dann könnte man z.B. Web-Hooks verwenden. Dann kann dein Server die Informationen einfach per Web Request an den Client (der ein eigener Server ist) weiter geben. Das wäre dann wie z.B. bei den GitHub Web-Hooks.

Wenn Clients aber wirklich Clients sind (im sinne von beliebige Rechner mit einem Webbrowser oder so), dann könnte man z.B. Web-Sockets nutzen. Dann baut der Client eine entsprechende Verbindung auf und der Server kann auf dieser Verbindung den Client über Updates informieren.

Das nur um ein paar kleine Ideen zu nennen. Generell ist es natürlich wichtig, dass man mehr über die Gegebenheiten erfährt. Ohne genaue Details (z.B. wie groß die "regelmäßigen Abstände" sind, was für Clients daran Interesse haben, wie viele Clients gleichzeitig aktiv sind, ....) ist es auch unmöglich, hier Ratschläge zu geben.
 

8u3631984

Bekanntes Mitglied
Erst einmal danke für deine Anregungen.
Ja da habeich wohl vie vergssen zu erzählen. Also das ganze läuft als Monolith. Innerhalb von 60s scannt der Image Service ein oder mehrere Verzeichnisse nach neuen JPEG Dateie und liest daraus die Metadaten aus und speichert alle Informationen in einer Datenbank.
Über die web Oberfläche soll es dann möglich sein, nach Bilder zu filtern. Z.B nach dem Aufnahmedatum - solche Daten stehen ja in den MetaDaten.

Da nun aber im Verzeichnis auch neue Bilder hinzugefügt werden können, muss die webSeite sich regelmäßig aktualisieren.
Meine erste Idee war das ganz über das Observerpattern zu realisieren.
D.h
Controller registiret sich beim ImageService und wird dann beim Speichern von einem neuen Bild benachrichtigt
 

Marinek

Bekanntes Mitglied
Das geht so nicht.

Bitte beachte die Hinweise von Konrad.

Du wirst Websockets nutzen müssen oder Clientseitiges JavaScript in Verbindung mit polling.
 

KonradN

Super-Moderator
Mitarbeiter
Das Problem ist nicht, dass die Information zu dem Controller kommt. Das Problem ist, dass der Controller ja nur bei einem Request angesprochen wird.

Der Ablauf ist ja:
  • Der Client sendet einen HTTP Request. Also ein GET/POST/... Request mit einem Pfad wie /images
  • Das Framework stellt ja den Web Server, da kommt also der Request an. Das Framework prüft dann den Pfad und die Methode und stellt dann Fest: Da muss der ImageController mit der Methode showAll ran.
  • Jetzt wird die Methode aufgerufen. In der Methode des Controllers hast du dann das Model aufgebaut und gibst dann zurück "showAll" oder so.
  • Da greift das Framework wieder ein. "showAll" wird dann ausgewertet. Das showAll Template wird also genommen und mit dem Model ausgewertet.
  • Das Ergebnis der Auswertung ist die HTML Seite und die wird dann an den Client zurück gesendet.

Damit ist der Request erledigt. Da ist also kein Platz für irgend einen Callback oder so. Das ist auch unnötig an der Stelle, denn in dem Punkt, bei dem der Controller mit der spezifischen Methode aufgerufen wurde, musst Du den aktuellen Stand ermitteln. Ein laufendes Update ist also egal.

Wichtig ist: Es macht keinen Sinn, diese Seite immer ganz aufzubauen. Hier solltest Du mit AJAX, also asynchronem Javascript arbeiten. Die eigentliche Seite kann also im Hintergrund immer wieder neue Requests absenden an einen Webservice. Da wäre die Idee, das klein zu halten. Also alle 60 Sekunden oder so fragt der Browser beim Server: Gibt es etwas Neues? (Das kann z.B. über die letzte ID gehen oder so).
Wenn es etwas neues gibt, dann solltest Du lediglich die Differenz abfragen. Also keine ganze Seite sondern nur Teile, die Du dann per Javascript einfügst in der bestehenden Seite.

Ein erster Schritt kann aber auch einfach etwas sein, was Du hier im Forum findest: Du blendest dann einfach ein: "Es gibt neue Bilder, bitte aktualisieren." oder so und da kann der Anwender drauf klicken und die ganze Seite lädt neu. Dann hast Du es relativ einfach gehalten in einem ersten Schritt. (Und Du hast etwas, das man dann nach und nach ausbauen kann!)

Das einfach einmal, um eine einfache Lösung etwas mehr im Detail zu erläutern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
8u3631984 Spring JPA Probleme beim SPeichern von Sets Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring JDBC Probleme beim Spaltennamen Frameworks - Spring, Play, Blade, Vaadin & Co 3
LimDul Spring-Batches in Docker über Rest starten/verfolgen Frameworks - Spring, Play, Blade, Vaadin & Co 0
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Eure Erfahrungen mit Primefaces und Spring - wer managed die Beans Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
L Spring Data und Rest Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Data und Rest Conroller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Amazon-SP-Api Frameworks - Spring, Play, Blade, Vaadin & Co 3
L Spring Data: Modellierung mit einer Embeddable bean Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Wann Spring Batch nutzen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
P Spring Hessian Remote Beispiel Frameworks - Spring, Play, Blade, Vaadin & Co 20
8u3631984 Spring 2.7.8 Info Enpoint nicht zuerreichen Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Spring UsernameNotFoundException(msg); auf der View msg ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Spring UsernameNotFoundException(Message) auf der View Message ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Security: Wie kommt 'UserDetails' an Username und Passwort ran? Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8
R Spring Security: Authentication & Permissions Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Cross-Origin beim Abrufen von Spring Endpoint Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
T Spring Resourcen Ordner ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring JPA und Repository Frameworks - Spring, Play, Blade, Vaadin & Co 12
D Mapstruct Dependency Injection funktioniert nicht mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 15
Avalon Wie sieht bei Euch das Deployment einer Spring Boot Anwendung aus? Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Threads in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 7
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Boot: Was bewirkt parent in maven genau? Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Security: Run-as replacement Einsatzbereich? Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Vaadin+Spring Boot erster Seitenload nach Neustart endlos Frameworks - Spring, Play, Blade, Vaadin & Co 0
doncarlito87 Wie erhalte ich ein JSON aus eine NativeQuery (Spring Boot)? Frameworks - Spring, Play, Blade, Vaadin & Co 8
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon Erstellung Dockerimage mit spring-boot:build-image in Spring Boot mit Umgebungsvariablen Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Integration - Logging Frameworks - Spring, Play, Blade, Vaadin & Co 7
D Spring Boot Field Injection in MapStruct Frameworks - Spring, Play, Blade, Vaadin & Co 5
D Spring Anfänger benötigt Hilfe Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot seltsame Logeinträge: Manipulationsversuche? Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Date keine neue Tabelle fuer Attribut Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Spring Security Config File anpassen Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Spring Cloud : Resttemplate mit Loadballancer Frameworks - Spring, Play, Blade, Vaadin & Co 11
Dimax Spring resource not found Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Spring MongoDB unique index Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 5
Dimax Spring App Probleme beim Ausführen auf dem Tomcat Server Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring WebFlux Cors konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Schöne View mit anchor scrolling in Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
Dimax Spring JPA Multiple Keys Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Security mit oauth2 in lokaler Konfiguration principal mocken Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Boot Mile Stone und Snapshot Versionen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Exception Body Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Was ist das Framework "Spring"? Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Unit/Integrations Testing Frameworks - Spring, Play, Blade, Vaadin & Co 3
D Spring Unit Test: UnsatisfiedDependencyException: Error creating bean with name Frameworks - Spring, Play, Blade, Vaadin & Co 2
H Resource Liste Lazy Autowired Spring Context Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Java Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Security Login with Credentials Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Boot - Overkill für private Projekte? Frameworks - Spring, Play, Blade, Vaadin & Co 3
krgewb Spring und GWT - & wird zu & amp; Frameworks - Spring, Play, Blade, Vaadin & Co 2
K Migration eines internen Frameworks zu Spring:Boot Frameworks - Spring, Play, Blade, Vaadin & Co 0
OnDemand JPA/Spring Repository Like Suche leeres Ergebnis Frameworks - Spring, Play, Blade, Vaadin & Co 0
Z Hibernate & Postgres in Spring Boot (Syntaxprobleme) Frameworks - Spring, Play, Blade, Vaadin & Co 2
Z Spring Boot mit JPA;, Hibernate, Rest & Lombok Frameworks - Spring, Play, Blade, Vaadin & Co 8
M Spring Initializer - Webservices Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Hateoas Frameworks - Spring, Play, Blade, Vaadin & Co 1
ma095 Spring und Postgresql Errors Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring+Vaadin App startet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Request externe API SSL Error Frameworks - Spring, Play, Blade, Vaadin & Co 7
OnDemand Spring Repo speichert, aber es kommt in der DB nicht an Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Im Spring ,Mysql-Funktion aufrufen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Security/Boot/Vaadin Cookie Problem bei iFrame Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring Boot: Feld ignorieren Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Spring + Thymleaf : Checkbox Object mappen Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Buch zum Spring Framework bzw. Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Jasypt Spring Boot HIbernate wie komme ich an den Key? Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Spring Boot im Docker Container - Logback wird nicht verwendet Frameworks - Spring, Play, Blade, Vaadin & Co 13
sascha-sphw Spring - Authentication object was not found Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Welches Spring Frontend Framework verwendet ihr und wie bzw wo ? Frameworks - Spring, Play, Blade, Vaadin & Co 7
8u3631984 Spring security - 403 bei Role Access Regel Frameworks - Spring, Play, Blade, Vaadin & Co 6
sascha-sphw Spring Boot Resource Server (OAuth2) @MockMvc Frameworks - Spring, Play, Blade, Vaadin & Co 5

Ähnliche Java Themen

Neue Themen


Oben