我已将 Tomcat 安装为服务。
它CATALINA_HOME
和CATALINA_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 自己的启动文件,并且它使我的自定义更改更加明显。