Finden Sie das jetty-home-Verzeichnis aus in einem java-web-Anwendung bei Ausführung als linux-service
Habe ich einen Steg 9 installiert auf CentOS in /srv/jetty
, und ich habe eine webapp bereitgestellt innen jetty.
Wenn ich starten Sie jetty mit java -jar start.jar &
dann innerhalb der web-Anwendung kann ich dies tun:
File base = new File(".");
System.out.println("Base Dir: " + base.getAbsolutePath());
Und es gibt mir das korrekte Verzeichnis der jetty-installation.
Aber dann Stell ich jetty als linux-service, ausgeführt mit einem user namens "jetty", und starten Sie mit service jetty start
rufen dann den obigen code, wird immer die geben mir wieder das home-Verzeichnis des Benutzers, der ausgeführt wird jetty in diesem Fall /home/jetty/
oder wenn ich als root ausführen, dann /root/
Wie kann ich Anlegestelle zu finden, das richtige Verzeichnis? Ich habe versucht, mit Steg.zu Hause in den config Dateien, aber nichts scheint zu funktionieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie ein paar Dinge zu kümmern.
Die Bemerkenswerte Wege für eine WebApp auf Jetty:
ServletContext Echten Pfad
Alle WebApps, die bereitgestellt und gestartet, belegt entweder einen Ordner, oder ein temp-Verzeichnis (je nach Lust und Laune des Containers). Die servlet spec Mandate, dass dieser Pfad sollte erkennbar sein, über das ServletContext für die webapp. Finden Sie heraus, wo Ihre WebApp ist, durch den Aufruf
ServletContext.getRealPath("/")
Siehe meine Vorherige Antwort für 5 verschiedene Möglichkeiten, die Sie können konfigurieren, dass diese Arbeit/temp-Verzeichnis:
https://stackoverflow.com/a/19232771/775715
Jetty-Home -
Standardmäßig alle Jetty-Distribution-Instanzen über ein System-Property namens
jetty.home
wird der Pfad zu der Jetty-Home-Verzeichnis auf der Festplatte. Davon ist auszugehen, werden, wo der Steg-Binärdateien und-Verteilung-Konfigurationen gefunden werden.Jetty-Basis
Ab Jetty 9.1, es ist auch eine obligatorische System-Property namens
jetty.base
das ist, wo Ihre spezifischen Instanz von jetty-Konfiguration + Bibliotheken + webapps untergebracht sind. Dies ist oft ein anderes Verzeichnis alsjetty.home
.Diese Trennung von binaries vs Konfiguration ist ein zentrales Konzept von Jetty 9.1 Annahme einer klaren Trennung die Modernisierung der Steganlage binaries einfach.
Sehen http://www.eclipse.org/jetty/documentation/current/startup-base-and-home.html
Ich, was ich gefunden habe, der leicht zu beantworten:
usermod -m -d /srv/jetty jetty
Wie es geraten wurde, an vielen Orten im internet habe ich einen Benutzer erstellt jetty ausführen der jetty-service. Also was immer ich auch Tat -auch wenn ich JETTY_LOGS - die log-Dateien, die immer endete in der Benutzer-home-Verzeichnis. Durch ändern der Steg Benutzer-home-Verzeichnis die
File(".")
und die Protokolle allen landen, wo ich wollte