Когда тестирование/отладка/диагностирование удаленный проблемы JMX, сначала всегда пытайтесь соединиться на том же хосте, который содержит MBeanServer (т.е. localhost), для исключения сети и других non-JMX определенных проблем.
Вы работаете на Linux? Возможно, агент управления связывает с localhost:
http://java.sun.com/j2se/1.5.0/docs/guide/management/faq.html#linux1
Вы, вероятно, испытываете проблему с брандмауэром. 'Проблема' состоит в том, что порт, который Вы определяете, не является единственным используемым портом, это использует 1 или возможно даже еще 2 порта для RMI, и те, вероятно, заблокированы брандмауэром.
Один из дополнительных портов не будет, знают впереди, если Вы используете конфигурацию RMI по умолчанию, таким образом, необходимо открыть большой диапазон портов - который не мог бы развлечь администратора сервера.
существует решение, которое не требует открытия большого количества портов однако, я заставил его работать с помощью объединенных исходных отрывков и подсказок от
http://forums.sun.com/thread.jspa?threadID=5267091 - ссылка больше не работает
http://blogs.oracle.com/jmxetc/entry/connecting_through_firewall_using_jmx
http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
, даже возможно установить ssh, туннелируют и все еще заставляют его работать:-)
Добавление -Djava.rmi.server.hostname = '
решило эту проблему для меня.
Я запускаю JConsole / JVisualVm в Windows, подключаюсь к tomcat под управлением Linux Redhat ES3.
Отключение фильтрации пакетов с помощью следующей команды помогло мне:
/usr/sbin/iptables -I INPUT -s jconsole-host -p tcp --destination-port jmxremote-port -j ACCEPT
где jconsole-host - это либо имя хоста, либо адрес хоста, на котором работает JConsole, а jmxremote-port - это номер порта, установленный для com.sun. management.jmxremote.port для удаленного управления.