Spring setenv.sh在Tomcat中的具体用途是什么?

Spring setenv.sh在Tomcat中的具体用途是什么?,spring,tomcat,credentials,Spring,Tomcat,Credentials,我搜索了很多,但找不到任何有用的信息: 在Tomcat中使用setenv.sh的确切用途是什么? 假设我们有一个RESTAPI(使用JavaEE或Spring构建),它使用一些参数/变量,如AWS凭据、数据库凭据等 如果我们使用多个实例和不同的参数/变量,那么使用我上面提到的环境变量参数化应用程序,并将它们的值放入setenv.sh上每个Tomcat实例的env vars中有意义吗 或者setenv.sh不适合这样的事情 提前感谢我只见过它用于指定CATALINA\u OPTS,但我注意到文件提

我搜索了很多,但找不到任何有用的信息:

在Tomcat中使用setenv.sh的确切用途是什么?

假设我们有一个RESTAPI(使用JavaEE或Spring构建),它使用一些参数/变量,如AWS凭据、数据库凭据等

如果我们使用多个实例和不同的参数/变量,那么使用我上面提到的环境变量参数化应用程序,并将它们的值放入setenv.sh上每个Tomcat实例的env vars中有意义吗

或者setenv.sh不适合这样的事情


提前感谢

我只见过它用于指定
CATALINA\u OPTS
,但我注意到文件提到使用它设置
JRE\u HOME
JAVA\u HOME

在高级配置下也有状态-多个Tomcat实例:

在许多情况下,最好有一份 同一平台上多个用户共享的Tomcat二进制分布 服务器。为了实现这一点,您可以设置CATALINA_底座 环境变量添加到包含您的应用程序的文件的目录 “个人”Tomcat实例


因此,我想答案是可以为每个应用程序创建一个
setenv
文件,并可能用于存储凭据,但我不认为它通常用于此目的。

~/Programs/apache-tomcat-9.0.7/bin/setenv.sh export CATALINA_OPTS=“$CATALINA_OPTS-DENV_TARGET=prod-DMy_Env_Var1=Whatever-DMy_Env_Var2=capitaloneisthest”

因此,setenv.sh中上述“”之间的所有内容都被设置为Tomcat中应用程序的环境变量。要检索/使用这些环境变量,请在Java(Spring)应用程序中使用:

Ex1)字符串mywhather=java.lang.System.getProperties().getProperty(“My_Env_Var1”); Ex2)字符串env=System.getProperties().getProperty(“My_env_Var2”)

要更改环境变量(例如,在编写单元测试时),请执行以下操作: System.setProperty(“My_Env_Var1”、“newEnv”)