tomcat 8 catalina.properties 添加变量

tomcat 8 catalina.properties 添加变量

我需要从 Tomcat 应用程序读取环境变量。我尝试这样做:

/opt/tomcat/conf/catalina.properties

最后添加:

my.special.variable=some_value

并阅读它

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

我得到 null

笔记

我在操作系统级别(linux ubuntu)定义了几个,但获取它们的结果是 tomcat 根目录 - /opt/tomcat。

例如 :

printenv可以看到变量 HOME(也可以使用 echo $HOME)。从 tomcat 外部的程序运行代码 - 结果是正确的 - /home/user。

在 tomcat 中部署的应用程序中完全相同的代码返回 - /opt/tomcat。

答案1

您可以在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

您还可以通过添加字符串“-Dmy.special.variable=some_value to the command line used to start Tomcat. This is done in the same file. Insetenv.sh”来定义 Java 系统属性,您可以添加如下行:

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

您还可以使用此文件来调整 Java 配置。如果JAVA_OPTS在用于启动 Tomcat 的环境中定义了系统变量,则其值将添加到命令行。

如果你使用 Java 系统属性,可以通过调用 来检索System.getProperty。代码如下:

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

答案2

环境变量不是 Tomcat 属性。

据我所知,您不能在实际代码中使用这些属性,只能在 server.xml 中使用。

如果您想使用可以通过 System.getenv 检索的环境变量,则需要使用操作系统定义它们;这完全取决于操作系统。一个经典的 Linux 示例是在/etc/default/tomcat或在 systemd 服务中。

相关内容