tomcat 8 catalina.properties add variable

1

Eu preciso ler uma variável ambiental do aplicativo Tomcat. Eu tentei fazer:

/opt/tomcat/conf/catalina.properties

addint no final:

my.special.variable=some_value

e lendo por

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

obtenho nulo

Nota

Eu tenho vários definidos no nível do sistema operacional (linux ubuntu), mas o resultado de obtê-los é tomcat root - / opt / tomcat.

Por exemplo:

com printenv eu posso ver a variável HOME (também com echo $ HOME). Executando código de um programa que está fora do tomcat - o resultado está correto - / home / user.

Exatamente o mesmo código no aplicativo implantado no retorno do tomcat - / opt / tomcat.

    
por Vasil Koicev 05.03.2017 / 22:12

2 respostas

3

Você pode definir variáveis em setenv.sh (Linux / UNIX) ou setenv.bat (Windows). Defina as variáveis da maneira apropriada para o O / S em que você está executando. Para Linux / UNIX, você precisará exportar as variáveis. Você também pode defini-los no ambiente em que inicia o Tomcat.

Você também pode criar um arquivo appenv.sh ou appenv.bat para alterações no aplicativo (local). Leia o arquivo setenv.sh ou setenv.bat existente para obter detalhes.

Períodos e hifens não são válidos para variáveis de ambiente. Tradicionalmente, os nomes são transformados por maiúsculas no nome e alterando períodos e hifens para sublinhados. Isso daria o nome MY_SPECIAL_VARIABLE . Isso seria definido com uma linha como:

export MY_SPECIAL_VARIABLE=some.value

Você também pode definir as propriedades do sistema Java adicionando uma string '-Dmy.special.variable = some_value to the command line used to start Tomcat. This is done in the same file. In setenv.sh' para adicionar uma linha como:

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

Você também pode usar esse arquivo para ajustar a configuração do Java. Se a variável de sistema JAVA_OPTS estiver definida no ambiente usado para iniciar o Tomcat, seu valor será adicionado à linha de comando.

Se você usar uma propriedade do sistema Java, recupere com uma chamada para System.getProperty . Isso seria codificado como:

    System.getProperty("my.special.variable");
    
por 06.03.2017 / 06:02
0

Variáveis de ambiente não são propriedades do Tomcat.

AFAIK você não pode usar as propriedades dentro do código real, apenas em por exemplo server.xml.

Se você quiser usar variáveis de ambiente que podem ser recuperadas com o System.getenv, será necessário defini-las com o sistema operacional; isso depende bastante. Um exemplo clássico do Linux seria em /etc/default/tomcat ou no serviço systemd.

    
por 05.03.2017 / 22:59