Tomcat 不会使用 setenv.sh

Tomcat 不会使用 setenv.sh

我已将 Tomcat 安装为服务。

CATALINA_HOMECATALINA_BASE是相同的:

-Dcatalina.base=/usr/share/tomcat7 -Dcatalina.home=/usr/share/tomcat7

我将setenv.sh脚本添加到/usr/share/tomcat7/bin下一行:

$ cat /usr/share/tomcat7/bin/setenv.sh
#!/usr/bin/env bash

export JAVA_OPTS="-Dcom.sun.management.jmxremote=true \
                  -Dcom.sun.management.jmxremote.port=9090 \
                  -Dcom.sun.management.jmxremote.ssl=false \
                  -Dcom.sun.management.jmxremote.authenticate=false \
                  -Djava.rmi.server.hostname=54.***.***.65"

但 Tomcat 的行为仍然没有改变 - 没有打开新端口,没有新选项是ps aux | grep java

# netstat -anp | grep 9090 | wc -l
0

# ps aux | grep java
tomcat   32063 96.6 23.5 1904000 399872 ?      Sl   09:04   3:07 /usr/lib/jvm/jre/bin/java -Xms512M -Xmx1024M -javaagent:/usr/share/tomcat7/newrelic/newrelic.jar -classpath :/usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat7/temp -Djava.util.logging.config.file=/usr/share/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start

文件由tomcat用户拥有并具有exec位:

# ls -l /usr/share/tomcat7/bin/setenv.sh
-rwxr-xr-x 1 tomcat tomcat 329 Jun 15 08:52 /usr/share/tomcat7/bin/setenv.sh

答案1

您应该设置的环境变量称为“CATALINA_OPTS”。下面是tomcat文档中的一个例子,也是和监控相关的: Apache Tomcat 7 - 监控和管理 Tomcat

答案2

根据我的博客,我的解决方案是设置JAVA_OPTS$CATALINA_HOME/conf/tomcat7.conf,例如:

# You can pass some parameters to java here if you wish to
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
JAVA_OPTS="-Xms512M -Xmx1024M -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=54.***.***.65"

Tomcat重启后的结果是:

# ps aux | grep java
tomcat    1359 96.6 13.0 1887508 220732 ?      Sl   09:19   0:44 /usr/lib/jvm/jre/bin/java -Xms512M -Xmx1024M -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -[...]

聚苯乙烯不要忘记创建默认配置文件的副本。然后grep -r JAVA_OPTS etc/*找到它# documentation会更有帮助:-)

答案3

仅供参考,但在 Tomcat 8.5.38(虽然没有检查 7)中,我的自定义setenv.sh仍然可以正常使用。我喜欢使用这个例如设置 $CLASSPATH,我发现它更易于维护,而且我不必适应 Tomcat 自己的启动文件,并且它使我的自定义更改更加明显。

相关内容