tomcat 8 catalina.properties 添加变量

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。

Bil*_*hor 5

您可以在setenv.sh(Linux/UNIX) 或setenv.bat(Windows) 中定义变量。以适当的方式为您运行的操作系统定义变量。对于 Linux/UNIX,您需要导出变量。您还可以在启动 Tomcat 的环境中定义它们。

您还可以为应用程序(本地)更改创建一个appenv.shappenv.bat文件。阅读现有setenv.shsetenv.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)