openjdk.ruOpenJDK на русском

JEP 168: Network Discovery of Manageable Java Processes

Обнаружение управляемых Java-процессов в сети

АвторDmitry Samersoff
ОтветственныйDmitriy Samersoff
ТипFeature
ОбластьJDK
СтатусClosed / Delivered
Выпуск8
Компонентcore-svc
Обсуждениеserviceability dash dev at openjdk dot java dot net
ТрудоёмкостьM
ДлительностьM
РецензентыMikael Vidstedt
ОдобренMikael Vidstedt
Создан2012/10/02 20:00
Обновлён2016/06/07 15:57
Задача8046158

Аннотация

Определить легковесный сетевой протокол для обнаружения запущенных и управляемых Java-процессов в пределах подсети.

Цели

  • Простая служба, которая не зависит ни от чего, кроме того, что входит в JDK.

  • Служба, для работы которой не нужен никакой процесс, кроме самого Java-процесса.

  • Она должна предоставлять информацию о запущенном Java-процессе в сети, и должна быть возможность обнаружить, что Java-процесс больше не работает.

  • Она не должна требовать предварительных сведений о том, какие машины доступны в сети.

  • Она должна включать информацию о конечной точке для подключения, например JMXService URL.

  • Служба должна останавливаться, когда мы останавливаем агент управления, и не должно быть возможности запустить службу без агента управления.

  • Она должна содержать и другую информацию, полезную для отображения подключения в клиенте, например PID, версию JRE и главный класс.

  • Должна быть возможность расширять передаваемую информацию.

Что не является целью

  • Протокол не предназначен для использования в публичной сети.

  • Протокол не предоставляет никакого контроля доступа; это должно делаться на сетевом уровне.

Описание

Протокол представляет собой легковесный протокол на основе multicast и работает как маяк: если приложение запущено с соответствующими параметрами, он рассылает JMXService URL, необходимый для подключения к внешнему JMX-агенту.

Полезная нагрузка имеет следующую структуру:

4 bytes JDP magic (0xC0FFEE42)
2 bytes JDP protocol version (1)
2 bytes	size of the next entry
    x bytes next entry (UTF-8 encoded)
    2 bytes size of next entry
...	Rinse and repeat...

При разборе полезной нагрузки чётные элементы будут считаться ключами, нечётные — значениями.

Стандартный пакет JDP содержит четыре элемента:

  • DISCOVERABLE_SESSION_UUID — уникальный идентификатор экземпляра; этот идентификатор меняется при каждом запуске и остановке протокола обнаружения

  • MAIN_CLASS — значение свойства sun.java.command

  • JMX_SERVICE_URL — URL для подключения к JMX-агенту

  • INSTANCE_NAME — заданное пользователем имя запущенного экземпляра

Поведение протокола управляется системными свойствами:

  • com.sun.management.jdp.port — переопределить порт по умолчанию

  • com.sun.management.jdp.address — переопределить адрес по умолчанию

  • com.sun.management.jmxremote.autodiscovery — запускать автообнаружение или нет. Автообнаружение запускается тогда и только тогда, когда выполнены следующие условия: (autodiscovery равно true ИЛИ (autodiscovery не задано И jdp.port задано))

  • com.sun.management.jdp.ttl — задать TTL для рассылаемого пакета, по умолчанию 1

  • com.sun.management.jdp.pause — задать интервал рассылки в секундах, по умолчанию 5

  • com.sun.management.jdp.source_addr — адрес интерфейса, используемого для рассылки

Значения по умолчанию

заявка [IANA #656814]:

224.0.23.178 JDP Java Discovery Protocol

заявка [IANA #656816]

7095/UDP

Тестирование

Будут предоставлены модульные тесты.

Влияние

  • Другие компоненты JDK: затронет только JMX-агент

  • Совместимость: не затрагивается

  • Безопасность: по умолчанию протокол выключен, кроме того, TTL по умолчанию для multicast-пакетов равен нулю, поэтому пакет не выйдет за пределы локальной сети.

  • Производительность и масштабируемость: ограниченное влияние, один дополнительный поток

  • Удобство использования: не затрагивается

  • I18n/L10n: не затрагивается

  • Доступность для людей с ограниченными возможностями: не затрагивается

  • Переносимость: не затрагивается

  • Упаковка и установка: не затрагиваются

  • Документация: новые параметры и их использование потребуется задокументировать.

  • TCK: не затрагивается