2015-01-14 2 views
0

Если я открою jvisualvm и перейдите к File >> Add Remote Host Мне будет предложено создать новую запись удаленного сервера. Я ввожу имя хоста myapp01.example.org, а затем я вижу, что этот сервер появляется под разделом Remote дерева Applications с левой стороны. Когда я щелкните правой кнопкой мыши этот сервер и нажмите Add JMX Connection, я вижу следующий диалог:Добавление удаленных виртуальных машин в Java VisualVM

enter image description here

Скажем, у меня есть приложение Java (WAR развернут на сервере Tomcat), работающих на myapp01.example.org:8443. Для SSH на сервер, я использую имя пользователя skroob и пароль 12345 (эй, это сочетание на моем багаже!):

ssh [email protected] 
[email protected]'s password: 12345 

Когда я заполняю диалог следующим образом:

  • Connection : myapp01.example.org:8443
  • Имя пользователя: skroob
  • Пароль: 12345

я получаю следующее сообщение об ошибке:

Cannot connect to [email protected]:8443 using service:jmxLrmi:///jndi/rmi://myapp01.example.org:8443/jmxrmi

Я считаю, что это может быть потому, что я не настраиваю JMX быть выставлены на самом сервере Tomcat. Или, может быть, я просто вхожу в неправильную информацию. Возможно оба. В любом случае:

  • Что мне нужно сделать, чтобы настроить это с помощью надлежащей информации JMX?
  • Что мне нужно сделать для правильной настройки для jstatd?
+1

Вам нужно создать Managa-JMX пользователя с именем пользователя/pwd, который вы хотите использовать для доступа к нему. http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html – kosa

+0

Спасибо @Nambari (+1) - однако, пожалуйста, см. раздел [JMX на этой странице] (http: //tomcat.apache. org/tomcat-7.0-doc/manager-howto.html # Using_the_JMX_Proxy_Servlet) - нет никакой информации о конфигурации имени пользователя и пароля? Вы уверены, что это не то, что устарело или удалено из более ранней версии Tomcat? Еще раз спасибо! – smeeb

+0

Найдите раздел «менеджер-jmx». Там вы увидите, как создавать пользователей для роли менеджера. – kosa

ответ

2

Это не то, как указано соединение JMX. Для tomcat наилучшим способом является создание файла bin/setenv.sh. Это лучше всего потому, что скрипты Apache уже настроены для поиска и вызова, если они есть.

Это место, где вы хотите установить любые параметры установки.

Вы уедешь с чем-то вроде этого:

# 
# PORT for debug 
export JPDA_ADDRESS='8000' 

echo start with 'jpda start' parameters to enable debugging. Tomcat will listen on $JPDA_ADDRESS 

CATALINA_OPTS="\ 
-Dcom.sun.management.jmxremote \ 
-Dcom.sun.management.jmxremote.port=1299 \ 
-Dcom.sun.management.jmxremote.authenticate=true \ 
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password \ 
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access \ 
-Dcom.sun.management.jmxremote.ssl=false 

jmxremote.access:

monitorRole readonly 
controlRole readwrite 

jmxremote.password: Этот файл должен быть READONLY по идентификатору, который начинается Tomcat или JMX НЕ БУДУ РАБОТА! т.е. CHMOD 400 jmxremote.password

monitorRole readpass 
controlRole changepass 

В основном настройка 2 идентификаторов пользователей JMX. Тот, который может получить доступ к открытым геттерам. Другая, которая также может получить доступ к сетчатым и суровым методам. На практике вы, как правило, хотите снабдить последнее, чтобы вы могли делать больше, чем просто смотреть.

SO .... В вашем диалоге выше становится

  • соединения: myapp01.example.org:1299
  • Имя пользователя: controlRole
  • Пароль: changepass
+0

Удивительный, спасибо @Terry (+1)! Несколько последующих вопросов. (1) Если я определяю 'bin/setenv.sh', не будет ли Tomcat запускать эти параметры каждый раз? Это было бы нежелательно; только если мне нужно было запустить его в режиме отладки и что-то устранить. Есть ли способ определить это в другом файле, а затем запустить Tomcat с этим другим файлом? (2) Где разместить файлы 'jmxoteote.access' и' jmxremote.password'? Еще раз спасибо! – smeeb

+1

1. Нет, он не всегда запускается в режиме отладки. Это просто говорит, что будет работать отладка порта. Чтобы фактически подключиться с помощью Eclipse для удаленной отладки вместо «bin/startup.sh», вы должны запустить tomcat с помощью команды «bin/startup.sh jpda start». – Terry

+1

технически файлы jmxremote должны быть в пути к классам JVM (если я помню правильно). Но чаще всего их помещают в каталог tomcat/conf (то же самое место, что и context.xml). ПРИМЕЧАНИЕ: относительная спецификация пути в setenv.sh – Terry

Смежные вопросы