Busqué mucho pero no pude encontrar ninguna información útil sobre esto:
¿Para qué se usa exactamente setenv.sh en Tomcat?
Digamos que tenemos una API REST (construida con Java EE o Spring) que usa algunos parámetros/variables como Credenciales de AWS, Credenciales de base de datos, etc.
¿Tiene sentido parametrizar la aplicación con variables de entorno para estas cosas que mencioné anteriormente y poner sus valores en env vars en setenv.sh para cada instancia de Tomcat en caso de que usemos más de una instancia y con diferentes parámetros/variables?
¿O setenv.sh no es para cosas como esa?
Gracias por adelantado
Solo lo he visto usado para especificar CATALINA_OPTS , pero noté que el archivo RUNNING.txt menciona usarlo para configurar JRE_HOME y JAVA_HOME .
RUNNING.txt también indica en Configuración avanzada - Múltiples instancias de Tomcat :
En muchas circunstancias, es deseable tener una sola copia de una distribución binaria de Tomcat compartida entre múltiples usuarios en el mismo servidor. Para que esto sea posible, puede configurar la variable de entorno CATALINA_BASE en el directorio que contiene los archivos para su instancia 'personal' de Tomcat.
Entonces, supongo que la respuesta es que se puede crear un archivo setenv para cada aplicación y probablemente se pueda usar para almacenar credenciales, pero no creo que se use comúnmente para ese propósito.
~/Programs/apache-tomcat-9.0.7/bin/setenv.sh export CATALINA_OPTS="$CATALINA_OPTS -DENV_TARGET=prod -DMy_Env_Var1=Lo que sea -DMy_Env_Var2=CapitalOneIsTheBest"
Entonces, todo lo que está entre "" arriba en setenv.sh se establece como variables ambientales para sus aplicaciones en Tomcat. Para recuperar/usar esas variables ambientales, use esto en sus aplicaciones Java (Spring):
Ej. 1) String myWhatever = java.lang.System.getProperties().getProperty("My_Env_Var1"); Ej. 2) String env= System.getProperties().getProperty("My_Env_Var2");
Para cambiar la variable ambiental (por ejemplo, cuando escribe pruebas unitarias), haga lo siguiente: System.setProperty("My_Env_Var1", "newEnv");