Назад | Перейти на главную страницу

Почему я не могу заставить JMX работать с Tomcat8 через CATALINA_OPTS?

В соответствии с https://tomcat.apache.org/tomcat-8.0-doc/monitoring.html#Introduction Я должен иметь возможность активировать JMX, установив некоторые переменные env в 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 забрать, как предлагает документация? Что мне не хватает?