System-environment-Variablen in der Jetty-Anwendung
Konfigurieren von Umgebungsvariablen des Systems im inneren von einem Jetty-Anwendung?
z.B. Für die Datenbank-Verbindung für details, setzen es in eine Datei und überprüfen Sie es in cvs ist eine schlechte Idee. Aus diesem Grund verwenden von system-Umwelt ist ein Weg zu gehen. Während die system-Umwelt-Variablen sind definiert in /etc/environments
Datei oder .bashrc/.zshrc
- Datei , in der Jetty-Anwendung, tut System.getenv("variable_name")
nicht alles geben. Es wird im Ergebnis null.
Las ich diese Frage: Konfigurieren eines Jetty-Anwendung mit env-Variablen zu dem Schluss kommt, was sagt, dass Jetty nicht unterstützen System.getenv()
und auch nicht in start.ini
Datei.
Und Steg-und etc-Umgebung auf ubuntu 12.10 was sagt In the jetty.sh script you can source the /etc/environment file and they will be present.
denen ich versucht habe und nicht die Werte, wie erwartet, was bedeutet, es gab mich nur null.
Wenn ich nicht verwenden können, die Standard - System.getenv()
oder in irgendeiner .ini
Datei dann, wie Sie Anmeldeinformationen festlegen, wie die Datenbank-Verbindung usw. ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht unterstützen
System.getenv()
ist kein Steg Sache, aber ein Java-Sache.Gibt es Tonnen von Einschränkungen um
System.getenv()
und Ihre Umgebung, so dass es fast nutzlos alle, aber die meisten naive und basic test-Fall. (zB: mehrzeilige Werte werden nicht unterstützt. mehrzeilige Einträge können brechen analysieren. Schlüssel ohne Werte werden nicht unterstützt. Schlüssel ohne Werte können oft verschmelzen mit der nächsten Schlüssel während der Analyse. Einträge mit nicht-US-ASCII-Zeichen werden nicht unterstützt. Einträge mit steuerzeichen werden nicht unterstützt.)Die gemeinsame Technik bei der Verwendung von System-Umgebungsvariablen mit Java-Programmen ist die shell verwenden bestimmte Techniken, um die Werte und injizieren Sie entweder auf der Befehlszeile oder in einer ini-Datei-format für Steg zu nutzen.
Abhängig von Ihrer Technik, diese Werte entweder als Steg-Eigenschaften oder als Java-System-Properties.
Einfach ein Projekt erstellt, um zu demonstrieren, 4 Wege, dies zu erreichen in
https://github.com/jetty-project/jetty-external-config
Externe Konfiguration Eigenschaften mit Steg
Demonstration, wie Sie einfache Eigenschaften zugegriffen werden kann
durch Servlets innerhalb Steg.
Diese demonstration zeigt 4 verschiedene Möglichkeiten zum konfigurieren einer Eigenschaft
zur Laufzeit kann dann gelesen werden, indem das Servlet läuft innerhalb von
Jetty.
Die Requisiten.Krieg
Dies ist eine einfache Krieg-Datei mit einem einzigen HttpServlet und ein WEB-INF/web.xml
Sehen PropsServlet.java details zu Verhalten.
Einfach kompilieren der obersten Ebene und der war-Datei gebaut werden und in alle demo-Steg.Basis-Standorte für dieses Projekt.
Beispiel #1: Basic Command Line
Den
/base-command-line
Projekt enthält eine einfachestart.ini
beginnt jetty auf port 9090 und stellt die webapp. keine zusätzliche Konfiguration wird durchgeführt, indem die on-disk-Konfiguration.Wenn Sie starten Sie es wie so ...
du wirst sehen, dass es gestartet wurde und bereitgestellt, um die
/props
Kontext-Pfad.Hier können Sie testen, für die Eigenschaften in der servlet über Werkzeuge wie
wget
odercurl
.Beispiel:
Können Sie verlangen sogar eine bestimmte Eigenschaft ..
Können Sie den server stoppen und starten Sie es mit einem system, das Eigentum unserer Wahl.
Beachten Sie die
-Dfoo=bar
?und suchen Sie es über curl ...
Dass zeigt access eine Eigenschaft, die angegeben wurde, über die Befehlszeile können Sie einen Blick auf die anderen Möglichkeiten.
Beispiel #2: Über start.ini
Den
/base-startini
Projekt enthält eine einfachestart.ini
beginnt jetty auf port 9090 und stellt die webapp.Diese
start.ini
enthält auch einefoo.ish
Eigenschaft.Können start-up-Steg und versuchen, unsere Requisiten servlet-Zugriff wieder ...
sich und fordern Sie es via curl ...
Beispiel #3: Mit den start.d optional ini
Den
/base-startd
Projekt enthält eine einfachestart.ini
beginnt jetty auf port 9090 und stellt die webapp.Diese
start.ini
enthält auch keine zusätzlichen Eigenschaften, die uns interessieren.Den
start.d/myconf.ini
enthält eine Eigenschaft namensfoo.d
dass wir interessiert sind.Können start-up-Steg und versuchen, unsere Requisiten servlet-Zugriff wieder ...
sich und fordern Sie es via curl ...
Beispiel #4: Mit --include-jetty-dir optional config
Den
/base-jettyinclude
Projekt enthält eine neuestart.ini
beginnt jetty auf port 9090 und stellt die webapp.Diese
start.ini
enthält auch keine zusätzlichen Eigenschaften, die uns interessieren.Jedoch die
start.ini
verwendet die--include-jetty-dir=../jettydir
optionale Konfiguration, die Punkte zu einem völlig neuen interrim Steg.Basis-Konfiguration Quelle.Den
../jettydir/start.ini
enthält eine Eigenschaft namensfoo.jetty.dir
dass wir interessiert sind.Können start-up-Steg und versuchen, unsere Requisiten servlet-Zugriff wieder ...
sich und fordern Sie es via curl ...
System.getProperties().contains("dbhost")
- aber weder hinzufügendbhost="localhost"
noch-Ddbhost="localhost"
zu denstart.ini
- Datei funktioniert", So die Bereitstellung zu starten.ini-Datei auch nicht helfen, wie ich versucht haben, aus dieser Kommentar. Bearbeiten können Sie Ihre Antwort und ein kleines Skript auf, wie das zu tun, was Sie vorgeschlagen ?