Ich habe eine kleine Anwendung mit Spring Boot entwickelt, die HSQLDB als Datenbank verwendet, um Benutzer vorerst zu speichern. Ich möchte die Datenbank in Mavens Ressourcenordner speichern. Meine application.properties Datei enthält die folgende Konfiguration:HSQLDB in Ressourcen innerhalb eines WAR
#...
spring.datasource.url=jdbc:hsqldb:file:src/main/resources/database/dashboard
#...
Also, wenn ich die Anwendung mit Java starten (Rechtsklick auf meiner Anwendung Main() und ausführendes Frühling Boot-App), wird die Datenbank direkt gespeichert.
Nachdem jedoch eine WAR-Datei mit mvn clean install spring-boot:repackage
in Tomcat deployiert und ausgeführt wurde, wird die Datenbank nicht in der explodierten WAR-Datei gespeichert.
Meine Frage ist, wie kann ich spring.datasource.url=jdbc:hsqldb:file:*
Eigenschaft zu speichern, die Datenbank innerhalb Maven Resources-Verzeichnis (was immer noch nach dem Explodieren der WAR zeigen)? Kann ich eine Umgebungsvariable wie in pom.xml verwenden?
EDIT die Antworten von @Steve C und @fredt Da habe ich erkannt, dass die Datenbank nicht im Krieg gespeichert werden soll. Stattdessen werde ich es im Home-Verzeichnis spring.datasource.url=jdbc:hsqldb:file:~/tomcat_webapp_data/dashboard/database
des Benutzers speichern. Vielen Dank!
Sie scheinen einen relativen Pfad zu verwenden, um auf hsqldb zu zeigen. Der Speicherort von Hsql ist relativ zum Arbeitsverzeichnis (wahrscheinlich bin/in tomcat /). Sie sollten einen absoluten Pfad verwenden. – Redlab
1) Bessere Verwendung von Apache Derby, HSQLDB wird immer vollständig in RAM-Speicher geladen - dies könnte Ihre App mit größeren DB 2 töten) ändern Sie einfach das Build-Skript, um das gesamte db-Verzeichnis into war enthalten, dann achten Sie auf den richtigen Pfad zu db Datei im Server-Container –
@Redlab Ich möchte keinen absoluten Pfad verwenden, da ich die Art des Systems nicht kenne, wo der WAR plaziert wird (Linux, Win ...), noch ob er ausgeführt wird mit Java. – russellhoff