Tomcat: где настроить JMX JAVA_OPTS или CATALINA_OPTS
У меня Tomcat установлен на Ubuntu. Я хочу включить JMX для мониторинга, поэтому в catalina.sh я изменил JAVA_OPTS
как:
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=4998 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
После перезапуска JMX работает, но когда я хочу остановить Tomcat, выдает ошибку как:
Ошибка: исключение, выданное агентом: java.rmi.server.ExportException: порт уже используется: 5555; вложенное исключение: java.net.BindException: адрес уже используется:
После некоторого поиска в Google я узнал, что мы записали все конфигурации JMX в CATALINA_OPTS
но после записи всех конфигураций внутри CATALINA_OPTS я не могу подключиться.
4 ответа
Создайте файл рядом с catalina.sh
называется setenv.sh
, Таким образом, все ваши изменения находятся в отдельном файле.
использование CATALINA_OPTS
скорее, чем JAVA_OPTS
поскольку CATALINA_OPTS
используется только на старте, тогда как JAVA_OPTS
используется при старте и остановке
Если вы установили Tomcat из пакетов, вам нужно изменить JAVA_OPTS в файле
/etc/default/tomcat...
У вас что-нибудь работает на порту 5555? Вы можете попробовать запустить
lsof -i :5555 or netstat -tulpn | grep :\5555
чтобы увидеть, что работает на этом порту.
Привет, чтобы сделать ответ более ясным, я добавляю ниже.
Я создал файл setenv.sh
под $CATALINA_HOME/bin/
, Содержание файла, как показано ниже.
JAVA_OPTS="-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.rmi.server.hostname=192.168.40.10"
Нет необходимости добавлять файл setenv.sh в catalina.sh, поскольку, увидев файл с именем setenv.sh, tomcat автоматически примет параметры. Затем я добавил строку жирным шрифтом, как показано ниже catalina.sh
,
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
. "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
. "$CATALINA_HOME/bin/setenv.sh"
fi
***export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=9090"***
Таким образом, мы можем избежать проблемы конфликта портов в Tomcat. Благодарю.