Невозможно использовать JConsole с Tomcat, работающим в качестве службы Windows - PullRequest
21 голосов
/ 02 февраля 2009

Я использую Tomcat 6.0.18 в качестве службы Windows. В служебном апплете jvm настроен по умолчанию, то есть использует jvm.dll JRE.

Я пытаюсь отслеживать это приложение с помощью JConsole, но не могу подключиться к нему локально. Я добавил параметр -Dcom.sun.management.jmxremote (который работает при запуске tomcat с помощью скрипта start.bat). Но jvm, похоже, не принимает этот параметр.

Ответы [ 6 ]

30 голосов
/ 17 февраля 2009

Есть хороший графический интерфейс для редактирования параметров, нет необходимости копаться в реестре.

Откройте C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ bin \ tomcat6.exe (или просто дважды щелкните значок монитора на панели задач). Перейдите на панель Java, добавьте следующее в список аргументов и перезапустите Tomcat.

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

Затем вы можете соединиться с JConsole или более новой VisualVM.

3 голосов
/ 02 февраля 2009

Вот рекомендуемый способ изменения jvmoptions и взаимодействия с сервисом:

http://tomcat.apache.org/tomcat-5.5-doc/windows-service-howto.html

Я бы попытался зайти в ваш реестр по адресу HKLM / Software / Apache Software Foundation / Procrun 2.0 // Параметры / Java и напрямую отредактировать многостроковое значение "Options".

2 голосов
/ 27 октября 2015

Существует еще довольно простой способ подключения JConsole к процессу Java, запущенному как служба Windows, с использованием локального режима, который я обнаружил здесь .

В основном это говорит о том, что для подключения к процессу Java, запущенному как служба Windows, вам необходимо запустить JConsole как службу Windows (вы можете сделать это с помощью Windows API api или с помощью любой оболочки, например yajsw . )

Кстати, это освободит вас от перезапуска Java-процесса, который был для меня критичным.

2 голосов
/ 16 апреля 2010

Я публикую ее в основном для записи этой информации для себя, я не проверял ее, но это также должно работать:

http://mysqlandsqlserver.blogspot.com/2010/02/jconsolejmap-and-tomcat-as-windows.html

1 голос
/ 22 марта 2012

Добавьте следующее в верхней части вашего catalina.bat

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote ^
    -Dcom.sun.management.jmxremote.port=8086 ^
    -Dcom.sun.management.jmxremote.ssl=false ^
    -Dcom.sun.management.jmxremote.authenticate=false

Остановите и перезапустите tomcat (очевидно)

Запустите jconsole.exe. Если ваш tomcat работает как служба, запустите jconsole.exe от имени администратора.

Выберите Удаленный процесс и введите localhost: 8086

1 голос
/ 01 мая 2009

Если Tomcat работает как служба Windows, и вы хотите подключиться к JVM локально, вам нужно запустить VisualVM или JConsole в качестве учетной записи System. Для этого можно использовать Sysinternals PsExec.exe .

psexec.exe -i -s c:\visualvm\bin\visualvm.exe
...