У меня 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 я не могу подключиться.
Создайте файл рядом с catalina.sh
называется setenv.sh
. Таким образом, все ваши изменения будут в отдельном файле.
Использовать CATALINA_OPTS
скорее, чем JAVA_OPTS
поскольку CATALINA_OPTS
используется только при запуске, тогда как JAVA_OPTS
используется при запуске и остановке.
Если вы установили Tomcat из пакетов, вам необходимо изменить JAVA_OPTS в файле
/etc/default/tomcat...
Привет, чтобы сделать ответ более ясным, я добавляю ниже.
Я создал файл 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. Спасибо.
У вас что-нибудь работает на порту 5555? Вы можете попробовать бежать
lsof -i :5555 or netstat -tulpn | grep :\5555
чтобы увидеть, что работает на этом порту.