在Tomcat中使用setenv.sh究竟是什么?

时间:2017-04-04 21:40:24

标签: spring tomcat credentials

我搜索了很多,但无法找到有关此内容的任何有用信息:

在Tomcat中使用了什么 setenv.sh

假设我们有一个REST API(使用Java EE或Spring构建),它使用一些参数/变量,如AWS Credentials,Database Credentials等。

对于我上面提到的这些事情,使用环境变量参数化应用程序是否有意义,并且如果我们使用多个实例,则将它们的值放在 setenv.sh 上的env变量中以用于每个Tomcat实例并使用不同的参数/变量?

或者 setenv.sh 对于那样的事情不是吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

我只看到它用于指定isSelected,但我注意到RUNNING.txt文件提到使用它来设置interface User { id: number; } interface SelectableUser extends User { isSelected: boolean; } class Something { users: SelectableUser[]; unselectExistingUser(usr: SelectableUser, event: any) { this.users.map((currentUser) => { if (usr.id === currentUser.id) { currentUser.isSelected = event.target.checked; } return currentUser; });; } } CATALINA_OPTS

RUNNING.txt还在高级配置 - 多个Tomcat实例下声明:

  

在许多情况下,最好只有一份副本   Tomcat二进制分发在多个用户之间共享   服务器。为了实现这一点,您可以设置CATALINA_BASE   环境变量到包含您的文件的目录   '个人'Tomcat实例。

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

答案 1 :(得分:1)

〜/程序/apache-tomcat-9.0.7/bin/setenv.sh export CATALINA_OPTS =“ $ CATALINA_OPTS -DENV_TARGET = prod -DMy_Env_Var1 =任何-DMy_Env_Var2 = CapitalOneIsTheBest”

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

Ex1)字符串myWhatever = java.lang.System.getProperties()。getProperty(“ My_Env_Var1”); 例2)字符串env = System.getProperties()。getProperty(“ My_Env_Var2”);

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