Я дважды проверил следующее:
- Я запускаю jvisualvm на том же компьютере, где работает Tomcat.
- Это Ява 6u19.
- Моя служба Tomcat работает под тем же пользователем, под которым я вошел в систему.
- Мой сервис Tomcat использует тот же самый каталог JVM, из которого я использую jvisualvm.
- Tomcat включил JMX для определенного порта, но я не думаю, что это мне поможет.
При всем этом я действительно вижу свой процесс Tomcat в списке «Локальные» для jvisualvm. Он отображается как «‹Неизвестное приложение> (pid 5644)». Если я дважды щелкну по нему, то на каждой вкладке появится сообщение «Не поддерживается для этой JVM». Однако VisualVM отображается как «Локальный», и для него работают все вкладки, очевидно, с использованием одного и того же экземпляра JVM. Не существует очевидного способа добавить соединение JMX к экземпляру «‹Unknown Application>».
Я вижу экземпляр JMX Tomcat в «Local» как «localhost: (мой номер порта)», и это работает, но на вкладке Visual GC отображается «Не поддерживается для этой JVM», что, как я предполагаю, означает, что Visual GC не поддерживает работа через JMX.
Что я делаю неправильно? Я попытался запустить jstatd. Это не имело никакого значения. Когда я запускаю jstatd, тогда visualvm видит «локальный» «jstatd», но когда я дважды щелкаю по нему, кажется, что он просто отслеживает этот процесс jstatd, а не какой-либо другой процесс Java.
ПРИМЕЧАНИЕ. Я решил попробовать запустить Tomcat не как сервис, а прямо в окне CMD, и, альт, теперь visualvm работает отлично. Я подумал, что попробую это, когда я запустил «jps» и получил жалобу «информация о процессе недоступна», погуглил для этого и нашел кого-то, кто сказал, что они получили это, когда запускали любое приложение Java в качестве службы. Это помогает на испытательном стенде, но не помогает понять, как контролировать производственную систему.
Это Tomcat, работающий как служба Windows под оболочкой Tanuki на Windows Server 2003.