Environment/system variables in server.xml

后端 未结 2 694
庸人自扰
庸人自扰 2020-12-05 19:31

How can I use environment/system variables in tomcat server.xml, context.xml, etc configuration files?

I tried to use ${ENV_VAR_NAME} (both for environm

相关标签:
2条回答
  • 2020-12-05 20:14

    How it's realized in my box.

    Bash-script for startup:

    #!/bin/sh
    
    SMEMORY=1G
    XMEMORY=1G
    
    if [ $ENV == DEV ]; then
      port_shutdown="8005"
      port_http="8080"
      port_https="8443"
    elif
      [ $ENV == SIT ]; then
      port_shutdown="8006"
      port_http="8081"
      port_https="8444"
    elif
      [ $ENV == UAT ]; then
      port_shutdown="8007"
      port_http="8082"
      port_https="8445"
    else
      echo "Unknown ENV"
      exit 1
    fi
    
    export CATALINA_OPTS=" ${SYSTEM_PROPS} -d64 -server -Xms$SMEMORY -Xmx$XMEMORY \
     -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=64M \
     -XX:+HeapDumpOnOutOfMemoryError -XX:MaxPermSize=1024M \
     -Dport.http=${port_http} -Dport.https=${port_https} -Dport.shutdown=${port_shutdown}"
    
    exec $CATALINA_HOME/bin/startup.sh
    

    In server.xml:

    <Connector
      port="${port.http}"
      protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="${port.https}"
    />
    

    Take a look at process:

    $ ps ux | grep tomcat
    ... -Xms1G -Xmx1G ... -Denv=KIEV_DEV... -Dport.http=8084 -Dport.https=8446 -Dport.shutdown=8008...
    

    Check ports:

    $ netstat -anp | grep java
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    tcp        0      0 :::8084                     :::*                        LISTEN      23343/java
    tcp        0      0 :::8446                     :::*                        LISTEN      23343/java
    
    0 讨论(0)
  • 2020-12-05 20:28

    Environment variables can be referenced in the server.xml etc by setting the system property org.apache.tomcat.util.digester.PROPERTY_SOURCE to the value org.apache.tomcat.util.digester.Digester$EnvironmentPropertySource.

    That system property has been available since 7.0, but EnvironmentPropertySource was not mentioned in the doc until 8.5.

    https://tomcat.apache.org/tomcat-9.0-doc/config/systemprops.html

    Update (April 2020):

    The latest tomcat releases (9.0.34, 8.5.54) now support property replacement in most configuration files: https://tomcat.apache.org/tomcat-9.0-doc/changelog.html#Tomcat_9.0.34_(markt)

    0 讨论(0)
提交回复
热议问题