Przekaż niestandardową zmienną środowiskową do tomcat


Używam eclipse do kodowania aplikacji internetowych. W ramach tego przekazałem zmienną środowiskową jako:
  • Projekt - & > uruchomienie - & > Uruchom konfigurację. A wybrana zakładka to środowisko.
  • Dodaj nową zmienną środowiskową o nazwie
    APP_MASTER_PASSWORD
    i jej wartość.

Mogę uzyskać dostęp do tej wartości w kodzie java jako
System.getenv ("APP_MASTER_PASSWORD")
.
Ale teraz chcę przekazać tę zmienną środowiskową do tomcat i uzyskać do niej dostęp w aplikacji, zamiast przepuszczać ją przez zaćmienie.
Jak więc mogę przekazać taką zmienną do tomcat?
Poszukałem o tym w Google. Ale nie znalazłem żadnego rozwiązania.
Podziękować.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby przekazać zmienne środowiskowe do serwera Tomcat, można użyć setenv.bat lub .sh.
Utwórz plik CATALINA_BASE/bin/setenv.bat lub .sh i umieść w nim następujący wiersz, a następnie uruchom Tomcat.
W systemie Windows:
set APP_MASTER_PASSWORD=foo
W systemach typu Unix:
export APP_MASTER_PASSWORD=foo
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W takim przypadku zamiast zmiennej środowiskowej należy użyć właściwości systemowej. Edytuj skrypty tomcat dla JAVA_OPTS i dodaj właściwość, taką jak:
-DAPP_MASTER_PASSWORD=foo
aw swoim kodzie napisz:
System.getProperty("APP_MASTER_PASSWORD");
Możesz to również zrobić w Eclipse, zamiast JAVA_OPTS, skopiuj wiersz do parametrów VM w konfiguracji uruchamiania.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Rekordy środowiska określone przez znaczniki
& < Environment & >
są dostępne dla JNDI za pomocą

InitialContext.lookup
http://docs.oracle.com/javase/ ... %2529
pod
java:/comp/env
. Możesz określić właściwości środowiska dla

JNDI
http://docs.oracle.com/javase/ ... .html
używając ustawienia środowiska dla konstruktora

InitialContext
http://docs.oracle.com/javase/ ... %2529
i

pliki zasobów aplikacji
http://docs.oracle.com/javase/ ... PPRES
.
System.getEnv ()
to systemowe zmienne środowiskowe samego procesu tomcat.
Aby ustawić zmienną środowiskową za pomocą polecenia bash:
export TOMCAT_OPTS = -Dmy.bar = foo
i uruchom Tomcat:
./startup.sh
, aby uzyskać wartość
właściwość systemu kreskowego
użyj
System.getProperty ()
.
System.getEnv ()
może służyć do pobierania zmiennej środowiskowej, tj.
TOMCAT_OPTS . 
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


Zmienne środowiska

można ustawić, tworząc plik
setenv.bat
(windows) lub
setenv.sh
(unix) w folderze
bin
katalogu instalacyjnego tomcat . Jednak zmienne środowiskowe nie będą mogły uzyskać dostępu do pliku z Twojego kodu.

Właściwości systemu

podane przez argumenty
-D
procesowi java. Początkowe argumenty Java można zdefiniować w zmiennej środowiskowej
JAVA_OPTS
.
Moje sugestie są

połączenie

te dwa mechanizmy. W swoim
apache-tomcat-0.0.0 \ bin \ setenv.bat
napisz:
set JAVA_OPTS=-DAPP_MASTER_PASSWORD=password1

aw swoim kodzie Java napisz:
System.getProperty("APP_MASTER_PASSWORD")
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dla systemów Mac Unix & amp; przejdź do folderu/bin/setenv.sh w tomcat
Dodaj poniższą linię
export JAVA_OPTS="$JAVA_OPTS -DAPP_MASTER_PASSWORD=mypass"
Teraz
System.getProperty („APP_MASTER_PASSWORD”)
zwróci
„mypass”
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W systemie Windows, jeśli nie możesz znaleźć setenv.bat, w drugiej linii Catalina.bat (po @echo off) dodaj to:

Ustaw APP_MASTER_PASSWORD = foo
Może to nie jest najlepsze podejście, ale działa
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli uruchamiasz Tomcat z Eclipse (widok „Serwery”), powinieneś mieć wpis konfiguracyjny „Uruchom/Uruchom” (menu) o nazwie „Apache Tomcat/Tomcat ...”. Po wybraniu tego wpisu z listy Uruchom konfigurację pojawi się okno z kilkoma zakładkami, z których jedna jest oznaczona jako „Środowisko”. Stamtąd możesz skonfigurować zmienne środowiskowe dla swojego Tomcata. Po tym należy ponownie uruchomić Tomcat.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


Mój przepis na to:
>
  • Nie działa & > & > Ustaw jako zmienną środowiskową systemu: Ustawiłem zmienną środowiskową w moim mac
    bash_profile
    , jednak Tomcat nie widział tej zmiennej.
  • Nie zadziałało & > & > setenv.sh: Apache zalecał posiadanie niestandardowych zmiennych środowiskowych w pliku
    setenv.sh
    i zrobiłem to.
  • ZADZIAŁAŁO! ! & > & > Po przeprowadzeniu krótkich badań na temat skryptów startowych Tomcata odkryłem, że zmienne środowiskowe ustawione w
    setenv.sh
    są tracone podczas uruchamiania. Musiałem więc edytować mój
    catalina.sh
    wbrew zaleceniom Apache i to załatwiło sprawę.

Dodaj zmienną
-DUSER_DEFINED
do polecenia uruchomienia w polu
catalina.sh
.
eval exec "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-classpath "\"$CLASSPATH\"" \
-Djava.security.manager \
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
-DUSER_DEFINED="$USER_DEFINED" \
org.apache.catalina.startup.Bootstrap "$@" start

P.S: Ten problem może być lokalny dla mojego komputera. Inni mieliby inne problemy. Dodam swoją odpowiedź do tego posta na wypadek, gdyby ktoś nadal miał problemy z Tomcat, który nie widzi środowiska vars po wypróbowaniu wszystkich zalecanych podejść.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się