我需要从 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.sh
或appenv.bat
文件。阅读现有的setenv.sh
或setenv.bat
文件以获取详细信息。句点和连字符对环境变量无效。传统上,名称是通过大写名称并将句点和连字符更改为下划线来转换的。那将给出名称
MY_SPECIAL_VARIABLE
。这将使用如下行定义:您还可以通过添加字符串“-Dmy.special.variable=some_value setenv.sh”来定义 Java 系统属性,
to the command line used to start Tomcat. This is done in the same file. In
您可以添加如下行:您还可以使用此文件来调整 Java 配置。如果
JAVA_OPTS
在启动 Tomcat 的环境中定义了系统变量,它的值将被添加到命令行中。如果您使用 Java 系统属性,您可以调用
System.getProperty
. 这将被编码为:环境变量不是 Tomcat 属性。
AFAIK 你不能使用实际代码中的属性,例如 server.xml。
如果您想使用可以通过 System.getenv 检索的环境变量,则需要在您的操作系统中定义它们;这完全取决于。一个经典的 Linux 示例将在
/etc/default/tomcat
systemd 服务中或中。