为什么我不能通过 CATALINA_OPTS 让 JMX 与 Tomcat8 一起运行?

为什么我不能通过 CATALINA_OPTS 让 JMX 与 Tomcat8 一起运行?

根据https://tomcat.apache.org/tomcat-8.0-doc/monitoring.html#Introduction我应该能够通过在 上设置一些环境变量来激活 JMX CATALINA_OPTS。我已经这样做了:

export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

有些地方似乎建议我catalina-jmx-remote.jar需要$CATALINA_OPTS/lib

$ ls -l /opt/tomcat/apache-tomcat-8.0.37/lib/catalina-jmx-remote.jar
-rw-r--r-- 1 root root 13608 Jan 18 23:05 /opt/tomcat/apache-tomcat-8.0.37/lib/catalina-jmx-remote.jar

我还确保环境变量已正确设置:

$ sudo cat /proc/20893/environ
LANG=en_USLANGUAGE=en_US:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binHOME=/srv/tomcatLOGNAME=tomcatUSER=tomcatSHELL=TOMCAT_JAVA_HOME=/opt/java/oracle/jdk1.8.0_112CATALINA_HOME=/opt/tomcat/apache-tomcat-8.0.37CATALINA_BASE=/srv/tomcat/catalina/tomcatCATALINA_OPTS=-Djava.rmi.server.hostname=172.16.29.134 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

尽管如此,JMX 并没有监听 1099,因此我无法连接到它:

$ netstat --listen | grep 1099

如果我使用以下命令运行常规 Java 程序:

$ java -Djava.rmi.server.hostname=172.16.29.134 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false HelloWorld

如果我在启动 tomcat 时将其作为参数传递,这似乎也有效:

/opt/java/oracle/jdk1.8.0_112/bin/java \
  -Djava.util.logging.config.file=/srv/tomcat/catalina/%i/conf/logging.properties \
  -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
  -Djava.security.egd=file:/dev/./urandom \
  -Djava.endorsed.dirs=/opt/tomcat/apache-tomcat-8.0.37/endorsed \
  -Dcatalina.home=/opt/tomcat/apache-tomcat-8.0.37 \
  -Dcatalina.base=/srv/tomcat/catalina/%i \
  -Djava.io.tmpdir=/srv/tomcat/catalina/%i/temp \
  -Djava.net.preferIPv4Stack=true \
  -Djava.rmi.server.hostname=172.16.29.134 \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.port=1099 \
  -Dcom.sun.management.jmxremote.ssl=false \
  -classpath "/opt/tomcat/apache-tomcat-8.0.37/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-8.0.37/bin/tomcat-juli.jar" \
  org.apache.catalina.startup.Bootstrap start

那么为什么没有CATALINA_OPTS像文档建议的那样被选中呢?我遗漏了什么?

相关内容