Configuración de Red Hat de Tomcat 8: palabra clave ${JAVA_OPTS} no reconocida

Configuración de Red Hat de Tomcat 8: palabra clave ${JAVA_OPTS} no reconocida

Estoy intentando configurar tomcat8Red Hat Enterprise Linux 7. Obtengo el archivo de configuración de una versión de Debian (que configuré), que es:


[...]

JAVA_OPTS='-Djava.awt.headless=true'
JAVA_OPTS='${JAVA_OPTS} -Dfile.encoding=UTF-8'
JAVA_OPTS='${JAVA_OPTS} -XX:+UseConcMarkSweepGC'

# memory
JAVA_OPTS='${JAVA_OPTS} -Xmx1024m -Xm1024m'

# logging
JAVA_OPTS='${JAVA_OPTS} -Dlogback.configurationFile=$CATALINA_BASE/conf/logback.xml'

[...]

Con Red Hat esta configuración no funciona; Recibo este error:

Error: Could not find or load main class ${JAVA_OPTS}
Caused by: java.lang.ClassNotFoundException: ${JAVA_OPTS}

Pero cuando borro ${JAVA_OPTS}y concateno JAVA_OPTSen una sola línea:

JAVA_OPTS='-Djava.awt.headless=true -Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -Xmx1024m -Xm1024m' -Dlogback.configurationFile=$CATALINA_BASE/conf/logback.xml'

Funciona.

También intenté reemplazar ${JAVA_OPTS}con $JAVA_OPTS%JAVA_OPTS%. ¿Tienes alguna idea de por qué tomcat8no se reconoce ${JAVA_OPTS}?

¡Gracias!

Respuesta1

Las comillas simples le dicen a Shell que no interprete los comandos/variables que contiene. Entonces no tienes ninguna ${JAVA_OPTS}construcción de expandir/interpretar. Intente hacerlo de esta manera (entre comillas dobles):

[...]

JAVA_OPTS='-Djava.awt.headless=true'
JAVA_OPTS="${JAVA_OPTS} -Dfile.encoding=UTF-8"
JAVA_OPTS="${JAVA_OPTS} -XX:+UseConcMarkSweepGC"

# memory
JAVA_OPTS="${JAVA_OPTS} -Xmx1024m -Xm1024m"

# logging
JAVA_OPTS="${JAVA_OPTS} -Dlogback.configurationFile=$CATALINA_BASE/conf/logback.xml"

[...]

También AFAIK en versiones contemporáneas de Java deberías usar -Xmsen lugar de-Xm

información relacionada