Ubuntu

tomcat 8 catalina.properties 添加變數

  • March 6, 2017

我需要從 Tomcat 應用程序中讀取一個環境變數。我試著做:

/opt/tomcat/conf/catalina.properties

最後添加:

my.special.variable=some_value

並通過閱讀

System.getenv("my.special.variable")

我得到空

筆記

我在作業系統級別(linux ubuntu)定義了幾個,但得到它們的結果是 tomcat root - /opt/tomcat。

例如 :

printenv我可以看到變數 HOME(也帶有 echo $HOME)。從tomcat之外的程序執行程式碼 - 結果是正確的 - /home/user.

與部署在 tomcat 中的應用程序中的程式碼完全相同 - /opt/tomcat。

setenv.sh您可以在(Linux/UNIX) 或setenv.bat(Windows)中定義變數。以適當的方式為您正在執行的 O/S 定義變數。對於 Linux/UNIX,您需要導出變數。您還可以在啟動 Tomcat 的環境中定義它們。

您還可以為應用程序(本地)更改創建一個appenv.shappenv.bat文件。閱讀現有的setenv.shsetenv.bat文件以獲取詳細資訊。

句點和連字元對環境變數無效。傳統上,名稱是通過大寫名稱並將句點和連字元更改為下劃線來轉換的。那將給出名稱MY_SPECIAL_VARIABLE。這將使用如下行定義:

export MY_SPECIAL_VARIABLE=some.value

您還可以通過添加字元串“-Dmy.special.variable=some_value setenv.sh”來定義 Java 系統屬性,to the command line used to start Tomcat. This is done in the same file. In您可以添加如下行:

export JAVA_OPTS="$JAVA_OPTS -Dmy.special.variable=some_value"

您還可以使用此文件來調整 Java 配置。如果JAVA_OPTS在啟動 Tomcat 的環境中定義了系統變數,它的值將被添加到命令行中。

如果您使用 Java 系統屬性,您可以呼叫System.getProperty. 這將被編碼為:

   System.getProperty("my.special.variable");

引用自:https://serverfault.com/questions/836436