Wildfly 8 Final - jconsole не может подключиться удаленно

Добрый день, люди,

Я пытаюсь использовать jconsole для подключения к удаленным серверам Wildfly 8 Final. Это не сработало: Ошибка подключения. После нескольких попыток и неудач я попытался подключить его хотя бы к моему jboss «localhost», но даже это не работает. Ошибок нет, просто не подключается и пишет "Ошибка подключения".

Подробности:

  1. Финальный сервер Wildfly 8
  2. Использование jconsole из wildfly_installation/bin/jconsole.bat
  3. Созданы пользователи управления. Пробовал с логином/паролем и без.
  4. Standalone.xml — это исходный файл, поставляемый с Wildfly 8 Final без изменений.
  5. URL-адрес, к которому я подключаю jconsole для подключения: service:jmx:remoting-jmx://localhost:9999
  6. В Wildfly/jboss ничего не развернуто, никаких WAR/EAR.
  7. Версия Java 1.7 выпуск 51. Последняя на момент написания.
  8. JAVA_HOME указывает на единственную установленную в системе java 1.7.
  9. JConsole может подключаться к локальному процессу Java и работает, но не удаленное подключение.

По сути, это совершенно новая установка Wildfly 8 Final с созданным пользователем управления, и jconsole не подключается к нему удаленно.

Что еще я пробовал: я прочитал много сообщений о людях, у которых проблемы с jconsole и Jboss AS 7.x. Я пробовал предложения из этих потоков, но ни один не работал. Также кажется, что Wildfly 8 имеет другую версию JMX (1.3 против 1.1 в Jboss 7.x), поэтому я предполагаю, что предложения standalone.xml из Jboss 7.x не работали для Wildfly 8 Final.


person user2113581    schedule 06.03.2014    source источник


Ответы (5)


Консоль Java Mission Control JMX и профилировщик Flight Recorder также работают на WildFly.

Как уже отмечалось, правильная строка подключения JMX:

сервис: jmx: http-remoting-jmx:// {вставьте IP-адрес сервера здесь}: 9990

Для этого требуется пользователь управления (подробности внизу).

Что касается бортового регистратора, его следует добавить в конфигурацию среды выполнения сервера в standalone.conf(.bat):

JAVA_OPTS=%JAVA_OPTS% -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true

На рабочей станции, где вы хотите запустить Java Mission Control, вам необходимо настроить путь к классам в jmc.ini (находится в каталоге bin вашего JDK):

-Xbootclasspath/a:c:\Program Files\Java\jdk1.7.0_67\lib\jconsole.jar;c:\Program Files\Java\jdk1.7.0_67\lib\tools.jar;c:\wildfly-8.1. 0.Final\bin\client\jboss-cli-client.jar`

Предварительные требования (вы, скорее всего, уже настроили это):

  1. это предполагает, что вы установили JDK на рабочую станцию ​​в c:\Program Files\Java\jdk1.7.0_67\
  2. это предполагает, что вы установили WildFly на рабочую станцию ​​в c:\wildfly-8.1.0.Final
  3. на сервере у вас должны быть правильные конфигурации bind.address (или <any-address>) в standalone.xml:

<interfaces>
    <interface name="management">
        <any-address/>
    </interface>
    <interface name="public">
        <any-address/>
    </interface>
    <interface name="unsecure">
        <any-address/>
    </interface>
</interfaces> 
  1. Вам необходимо иметь управляющего пользователя на сервере, которого вы можете добавить с помощью \bin\add-user.bat(.sh).

To test this connect to http://{insert server ip here}:9990 with a web browser which will open the server's web UI console.

С наилучшими пожеланиями!

person ziga    schedule 28.10.2014
comment
Спасибо, что объяснили это от начала до конца. Для тех, кто использует OSX на стороне клиента; jmc.ini расположен в /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/lib/missioncontrol/Java Mission Control.app/Contents/MacOS, и вам нужно будет только добавить -Xbootclasspath/a:/path/to/wildfly-8.2.0.Final/bin/client/jboss-cli-client.jar в конец. - person Paaske; 06.02.2015
comment
Есть ли отличия для подключения к Wildfly, работающему в качестве домена? Я могу подключиться к серверам через jmx с помощью jconsole, но мне не удалось подключиться к Java Mission Control. - person Adam6806; 17.07.2015

Ладно, разобрался. Собственный порт управления (9999) был удален в финальной версии Wildfly 8. Теперь есть только 1 порт управления (9990), и над ним мультиплексировано несколько предыдущих портов, включая JMX. Он все еще был доступен в версии-кандидате Wildfly 8, отсюда и вся путаница с онлайн-инструкциями и конфигурациями, доступными в других местах в Интернете.

Таким образом, ключ заключается в том, чтобы указать правильный протокол, который сейчас не является удаленным-jmx, а http-remoting-jmx. URL-адрес для подключения к серверу должен быть таким:

service:jmx:http-remoting-jmx://<server_host_or_ip>:9990

(это по сравнению с service:jmx:remoting-jmx://:9999 на предыдущих серверах jboss/wildfly)

Наконец, не нужно возиться с конфигом standalone.xml. Все настройки конфигурации, чтобы заставить его работать на Jboss 7.x, не будут работать для него. Все это работает из коробки с правильным протоколом и номером порта. Просто не забудьте создать пользователя jboss в ManagementRealm.

person user2113581    schedule 07.03.2014

Это была ошибка в WildFly, которая была недавно исправлена ​​и станет частью выпуска 8.0.1.

Дополнительные сведения см. в разделе jira.

person Tomaz Cerar    schedule 11.03.2014

Вы должны включить jboss-cli-client.jar в путь к классам jconsole:

jconsole -J-Djava.class.path=$JAVA_HOME/lib/jconsole.jar:$WILDFLY_HOME/bin/client/jboss-cli-client.jar

Замените $JAVA_HOME на что-то вроде /usr/lib/jvm/java-8-oracle/ и $WILDFLY_HOME на /opt/wildfly/ или туда, где вы его распаковали.

И тогда URL-адрес имеет следующий формат:

service:jmx:remote+http://${host}:9990

Также введите имя пользователя и пароль с учетными данными, настроенными с помощью add-user.sh

person rzymek    schedule 09.12.2015

Ниже описано, как включить старый собственный интерфейс JMX, удаленный из конфигурации по умолчанию WildFly 8, который обратно совместим с инструментами JMX.

Это необходимо, когда новый HTTP-интерфейс невозможен, например. для интеграции с устаревшими инструментами, такими как надстройка Bamboo JBoss 7.

Протестировано с WildFly 10, оно также должно работать с WildFly 8 и WildFly 9.

Поскольку подключаемый модуль не поддерживает интерфейс управления HTTP, для его работы необходимо включить собственный интерфейс JMX, который раньше работал на порту 9999.

Это можно сделать, добавив элемент native-interface в раздел management-interfaces:

    <management-interfaces>
        <native-interface security-realm="ManagementRealm">
            <socket-binding native="management-native"/>
        </native-interface>
        <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true">
            <socket-binding http="management-http"/>
        </http-interface>
    </management-interfaces>

И определение соответствующего привязки сокета

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-native" interface="management" 
                    port="${jboss.management.native.port:9999}"/>
    ...

Если вы находитесь в режиме домена, чтобы использовать удаленную конечную точку, установите для use-management-endpoint значение false.

    <subsystem xmlns="urn:jboss:domain:jmx:1.3">
        <expose-resolved-model/>
        <expose-expression-model/>
        <remoting-connector use-management-endpoint="false"/>
    </subsystem>

Надеюсь, это может помочь кому-нибудь...

Ссылка:

https://docs.jboss.org/author/display/WFLY8/Admin+Guide#AdminGuide-NativeManagementEndpoint

person Jose Manuel Gomez Alvarez    schedule 07.09.2016
comment
Спасибо! Какой URL мы должны использовать в JConsole в этом случае? - person sm4rk0; 29.09.2017