Vas*_*cev 1 ubuntu tomcat environment-variables
我需要从 Tomcat 应用程序读取环境变量。我试图做:
/opt/tomcat/conf/catalina.properties
Run Code Online (Sandbox Code Playgroud)
最后添加:
my.special.variable=some_value
Run Code Online (Sandbox Code Playgroud)
并阅读它
System.getenv("my.special.variable")
Run Code Online (Sandbox Code Playgroud)
我得到空
笔记
我在操作系统级别(linux ubuntu)定义了几个,但获得它们的结果是 tomcat root - /opt/tomcat。
例如 :
用printenv
我可以看到变量 HOME(也用 echo $HOME)。从 tomcat 之外的程序运行代码 - 结果是正确的 - /home/user。
部署在 tomcat 中的应用程序中完全相同的代码返回 - /opt/tomcat。
您可以在setenv.sh
(Linux/UNIX) 或setenv.bat
(Windows) 中定义变量。以适当的方式为您运行的操作系统定义变量。对于 Linux/UNIX,您需要导出变量。您还可以在启动 Tomcat 的环境中定义它们。
您还可以为应用程序(本地)更改创建一个appenv.sh
或appenv.bat
文件。阅读现有setenv.sh
或setenv.bat
文件以了解详细信息。
句点和连字符对环境变量无效。传统上,通过将名称大写并将句点和连字符更改为下划线来转换名称。那会给名字MY_SPECIAL_VARIABLE
。这将用如下一行定义:
export MY_SPECIAL_VARIABLE=some.value
Run Code Online (Sandbox Code Playgroud)
您还可以通过添加字符串 '-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"
Run Code Online (Sandbox Code Playgroud)
您还可以使用此文件来调整 Java 配置。如果JAVA_OPTS
在用于启动 Tomcat 的环境中定义了系统变量,其值将被添加到命令行中。
如果您使用 Java 系统属性,则通过调用System.getProperty
. 这将被编码为:
System.getProperty("my.special.variable");
Run Code Online (Sandbox Code Playgroud)