Java Springboot Ressourcenmanagement Frage

DeusExMachina

Lt. Junior Grade
Registriert
Jan. 2008
Beiträge
391
Da ich die Frage nicht richtig formulieren kann versagt mein Google Foo.

Folgendes Problem:
Mein Programm ließt eine yaml ein um daraus Objekte zu erzeugen. Die ich dann weiter verarbeite.
Da ist alles gut.

In der YAML sind mehre Objekte definiert und das Programm erzeugt jetzt eine liste von objekten

Für das Beispiel konstruiere ich mal eine abstrakte Version
Code:
listsElems:
-
  displayName: Element1
  task: read
-
  displayName: Element2
  task: write
-
  displayName: Element3
  task: read

Im Moment liegt das ganze unter Resources/configuration/list.yaml

Ich nach dem Deplopyment liegt das ganze dann ja in der war und ist von aussen nicht erreichbar.
Das möchte ich aber ändern.

Ich möchte daraus eine Externe Resource machen die auf dem ausführenden System hinterlegt ist und vom Tool gelesen und verarbeitet wird jedes mal wenn der Task der das braucht das File lädt. So das man Änderungen machen kann ohne das Tool zu redeployen.

Suche ich nach externer Resource bekomme ich immer nur Anleitungen für das externalisieren der Config das will ich aber nicht.
 
DeusExMachina schrieb:
Ich möchte daraus eine Externe Resource machen die auf dem ausführenden System hinterlegt ist und vom Tool gelesen und verarbeitet wird jedes mal wenn der Task der das braucht das File lädt. So das man Änderungen machen kann ohne das Tool zu redeployen.

Suche ich nach externer Resource bekomme ich immer nur Anleitungen für das externalisieren der Config das will ich aber nicht.
Du beschreibst hier, wie du das Huhn und das Ei gleichzeitig möchtest.
Ich glaube du musst für das Verständnis mehr beschreiben, was dein eigentliches Ziel ist.

Mein Gefühl ist, dass du mit einem Aufruf auf das Programm mit Parametern weiter kommst, als mit dem herumbasteln an Files.
(Z. B. ein REST Aufruf)
 
  • Gefällt mir
Reaktionen: nutrix
keine externe Schnittstelle zu Steuerung (ist nicht gewollt, sonst hätte ich eine minimale DB und eine rudimentäre UI gemacht )
Und ein parametrisierter Aufruf ist viel zu schwach die Config ist deutlich komplexer als im Beispiel. Das Beispiel reicht aber für meine Frage mehr als aus.

Das ist einfach ein Task der alle paar Stunden Daten von a lädt, verarbeitet und nach b schreibt.

Nehmen wir meine Beispiel YAML

ich möchte das Element zwei auf read und element drei auf write umgestellt wird
dafür will ich nur die yaml öffnen den wert editieren und speichern
läuft das tool das nächste mal lädt es die yaml und arbeitet die liste der elemente ab

was das tool wirklich macht ist völlig egal das hat

Was ich aber möchte ist das die YAML nicht in der WAR versteckt ist sonder ausserhalb liegt
 
Java:
String content = Files.readString(new File("path/to/file/on/disk").toPath());
// parse YAML
// do your stuff...

Das jedes mal ausführen, wenn die Tasks abgearbeitet werden sollen.
Oder ich hab etwas komplett falsch verstanden...
Den Pfad würde ich entweder als Parameter oder Umgebungsvariable festlegen.
 
Okay gelöst hab ich es jetzt mit:

Java:
InputStream inputStream = new FileInputStream(absolutFilePath)

Den der Pfad wird an die Methode übergeben und in der Autoconfiguration aus der Config ausgelesen.

Die Testbarkeit bleibt erhalten und der User muss für einfache Erweiterungen nicht jedes mal redeployen (was an sich auch kein Thema wäre würde es eine brauchbare CI/CD beim Kunden geben aber daran haben sie gespart)

Nun denn danke für den Input.
 
  • Gefällt mir
Reaktionen: nutrix
Zurück
Oben