// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Введение в мониторинг JMX в IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Введение в мониторинг JMX в IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Введение в мониторинг JMX в IDE NetBeans

Модуль NetBeans JMX интегрирует технологию JMX в рабочие процессы IDE NetBeans. Этот модуль позволяет быстро разрабатывать управляющие приложения, добавлять функции управления в существующие приложения, разрабатывать приложения-диспетчеры и контролировать состояние виртуальной машины.

В новой версии данного документа добавлена информация о модуле JMX Wizard 3.0 для NetBeans IDE 6.5 и более поздних версий, который работает на платформах JDK 6 или JDK 7. Модуль JMX можно загрузить в Центре обновлений.

*Примечание.* В этом документе в кратком и сжатом виде приведены основные сведения о модуле JMX для IDE NetBeans. Более подробную информацию можно получить, выполнив задания в разделе link:jmx-tutorial.html[+Добавление оркестровки JMX в приложение Java+] Практического руководства по модулю JMX.

В этом кратком руководстве представлен обзор возможностей модуля JMX:

image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0"]

* Мастеры для создания компонентов JMX MBean и диспетчеров.
* Обновление существующих компонентов MBean путем добавления атрибутов и операций, реализации интерфейса  ``MBeanRegistration``  или интерфейса  ``NotificationEmitter`` .
* Создание компонента MBean на основе существующего класса Java.
* Регистрация компонентов MBean на сервере Java Platform MBean Server.
* Возможность запуска консоли управления платформой Java (JConsole).
* Возможность запуска и отладки приложений в консоли JConsole.
* Образец приложения на основе игры Anagram для демонстрации добавления возможностей JMX в собственное приложение.
* Мастер для создания файла свойств управления, позволяющего запускать защищенные управляемые виртуальные машины Java (JVM).
* Онлайн-справка.
* Практические руководства доступны на сайте link:../../index.html[+netbeans.org+].


== Предпосылки

Предполагается, что читатель обладает базовыми знаниями или опытом программирования по следующим технологиям.

* Технология JMX. link:http://download.oracle.com/javase/6/docs/technotes/guides/jmx/index.html[+ Онлайн-документация JMX+]
* Технология Java. link:http://www.oracle.com/technetwork/java/javase/tech/index.html[+ Краткий обзор технологий Java SE+]
* IDE NetBeans

Знания в области link:http://download.oracle.com/javase/6/docs/technotes/guides/management/index.html[+ мониторинга и управления платформой Java+] будут преимуществом.


== Программное обеспечение, требуемое для работы с данным учебным курсом.

Для работы с этим учебным курсом на компьютере должно быть установлено следующее программное обеспечение.

|===
|Программное обеспечение или ресурс |Требуемая версия 

|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |пакет Java, версии 7.2, 7.3, 7.4, 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |версия 7 или 8 

|Подключаемый модуль JMX |Доступен в Центре обновлений NetBeans 

|Подключаемый модуль JConsole |Доступен в Центре обновлений NetBeans 
|===

Чтобы установить подключаемые модули *JMX* и *JConsole*, выберите Сервис > Подключаемые модули и загрузите модули из Центра обновлений NetBeans.


== Работа с мастерами JMX

После установки подключаемого JMX и открытия проекта можно запустить мастер JMX. Для этого выберите Файл > Создать файл (Ctrl-N), затем выберите категорию JMX. После этого можно выбрать один из следующих вариантов:

* *Файл конфигурации управления.* Стандартный файл свойств Java, в котором хранится конфигурация управления JMX, в частности, параметры удаленных подключений и безопасности.
* *Несколько типов компонентов JMX MBean.* Компонент MBean может представлять устройство, приложение или любой другой контролируемый ресурс. Компоненты MBean предоставляют интерфейс управления: набор доступных для чтения/записи атрибутов и набор вызываемых операций, а также самоописание. Этот интерфейс управления не меняется на протяжении всего жизненного цикла экземпляра MBean. Компоненты MBean также могут генерировать уведомления при возникновении определенных событий. Компоненты JMX MBean должны быть зарегистрированы на сервере MBean.
* *Диспетчер JMX.* Диспетчер JMX - это любое приложение, которое подключается к удаленному серверу JMX MBean.
image::images/jmx-newfile.png[title="Мастеры создания файлов в категории JMX"]


== Обновление компонентов MBean

В компоненты MBean можно добавлять атрибуты и операции. Для этого используются команды контекстного меню JMX, при выборе которых открывается диалоговое окно. Также в компоненты MBean можно добавить реализацию интерфейса  ``NotificationEmitter`` .

Чтобы обновить компонент MBean, выберите файл Java с классом MBean в дереве проектов и щелкните правой кнопкой мыши на узле, чтобы открыть контекстное меню JMX. Также можно просто щелкнуть правой кнопкой мыши в файле Java с классом MBean, открытом в редакторе, и выбрать нужную команду контекстного меню.

Эти действия показаны в упражнении 3 практического руководства link:jmx-tutorial.html#Exercise_3[+Добавление оркестровки JMX в приложение Java+].


== Регистрация компонентов MBean

Для удаленного подключения компонентов MBean и управления приложением необходимо, чтобы компоненты MBean были зарегистрированы на сервере MBean.

Сервер MBean - центральный элемент технологии JMX. Он хранит ссылки на все зарегистрированные компоненты MBean, отправляет уведомления о регистрации или удалении компонентов MBean, а также разрешает удаленные подключения для предоставления атрибутов и операций зарегистрированных на нем компонентов MBean. Если у вас недостаточно знаний о роли сервера MBean, ознакомьтесь с документацией API  `` link:http://download.oracle.com/javase/6/docs/api/javax/management/MBeanServer.html[+ javax.management.MBeanServer+]`` .

Начиная с JDK 5, платформа Java включает в себя стандартный сервер MBean - Platform MBean Server. Этот сервер позволяет контролировать состояние виртуальной машины JVM, но на нем также можно регистрировать компоненты MBean. Дополнительные сведения о сервере Java Platform MBean см. в документации API  `` link:http://download.oracle.com/javase/6/docs/api/java/lang/management/ManagementFactory.html[+ java.lang.management.ManagementFactory +]`` .

Фрагмент кода приложения, в котором будут зарегистрированы компоненты MBean, определяется логикой. Как правило, это фаза инициализации класса Main. Щелкните правой кнопкой мыши в редакторе в том месте, где хотите создать код регистрации компонента MBean, выберите подменю JMX и команду 'Создать регистрацию MBean...'.

Это действие показано в упражнении 5 практического руководства link:jmx-tutorial.html#Exercise_5[+ Добавление оркестровки JMX в приложение Java+].


== Реализация и исполнение управляемых приложений

JConsole - совместимый с JMX графический инструмент, предназначенный для мониторинга виртуальной машины Java. JConsole позволяет контролировать как локальные, так и удаленные виртуальные машины JVM. Также с помощью этой консоли можно контролировать приложения JMX и управлять ими.

Далее описана типичная процедура реализации и исполнения управляемых приложений:

1. Создание компонентов MBean
2. Добавление реализации в компоненты MBean
3. Создание кода регистрации компонентов MBean
4. Запуск или отладка проекта в JConsole.

После установки подключаемых модулей JMX и JConsole на панели инструментов появятся следующие кнопки. Эти команды также доступны в пункте 'Отладка' главного меню.

|===
|Кнопка |Описание 

|image::images/run-project24.png[title="Кнопка 'Запуск основного проекта с функциями мониторинга и управления'"] |Запуск основного проекта с функциями мониторинга и управления 

|image::images/debug-project24.png[title="Кнопка 'Отладка основного проекта с функциями мониторинга и управления'"] |Отладка основного проекта с функциями мониторинга и управления 

|image::images/console24.png[title="Кнопка 'Открыть консоль управления JConsole'"] |Открыть консоль управления JConsole 
|===

*Примечание.* JConsole является компонентом платформы Java и может использоваться независимо от IDE. Подробные сведения:

* Главная страница link:http://download.oracle.com/javase/6/docs/technotes/tools/share/jconsole.html[+ ``jconsole``  +]
* link:http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html[+Документ 'Использование JConsole'+]


== Запуск демонстрационного приложения

В состав модуля JMX входит демонстрационное приложение со встроенными функциями мониторинга JMX.

1. Выберите команду "Файл" > "Новый проект".
2. В разделе 'Образцы' выберите категорию JMX.
3. Выберите проект 'Игра Anagram под управлениемJMX'. 
image::images/jmx-newproject.png[title="Проект 'Игра Anagram под управлениемJMX' в мастере создания проектов"]

[start=4]
. Нажмите 'Далее'. Имя проекта и местоположение по умолчанию можно не менять. Убедитесь, что установлен флажок "Задать в качестве основного проекта". Нажмите кнопку 'Готово'.

*Примечания.* Среда IDE может запросить разрешение на установку библиотеки JUnit, если вы не установили подключаемый модуль JUnit ранее. Вы можете нажать 'Разрешить' в диалоговом окне 'Разрешить проблему с ссылками' для запуска программы установки подключаемого модуля JUnit. В качестве альтернативы вы можете установить подключаемый модуль JUnit в диспетчере подключаемых модулей.


[start=5]
. Когда проект создан и выбран в качестве основного, запустите его в консоли JConsole, нажав на кнопку 'Запуск основного проекта с функциями мониторинга и управления'.

*Примечания.* Вы можете увидеть предупреждение о сбое подключения на консоли управления и мониторинга Java при попытке консоли подключиться к процессу Anagram Game. Для этой учебной программы вы можете нажать Ненадежно, когда вам будет предложено разрешить подключение.

При нажатии на эту кнопку запускается игра Anagram:

image::images/jmx-anagram.png[title="Игра Anagram"]

Также отображается окно JConsole.


[start=6]
. В окне JConsole перейдите на вкладку MBeans и в дереве слева откройте все узлы под  ``anagrams.toy.com`` , как показано на рисунке.
image::images/jmx-jconsole1.png[title="Окно JConsole"]

[start=7]
. Выберите узел 'Уведомления' и нажмите кнопку 'Подписаться' в нижней части окна консоли. После этого JConsole будет получать уведомления при расшифровке каждой анаграммы.

[start=8]
. Теперь перейдите в окно игры Anagram и расшифруйте первые три или четыре анаграммы (ответы находятся в классе WordLibrary: abstraction, ambiguous, arithmetic, backslash...)

[start=9]
. Вернитесь в консоль JConsole. Вы увидите, что получено четыре уведомления.

[start=10]
. При нажатии на узел 'Атрибуты' видно, что атрибуты обновлены: 
image::images/jmx-jconsole2.png[title="Окно JConsole с обновленными значениями"]
link:/about/contact_form.html?to=3&subject=Feedback:%20Getting%20Started%20with%20JMX%20Monitoring[+Отправить отзыв по этому учебному курсу+]



== См. также

В этом документе в кратком и сжатом виде приведены основные сведения о модуле JMX для IDE NetBeans. Более подробную информацию можно найти в практическом руководстве по модулю JMX:

* link:jmx-tutorial.html[+Добавление инструментов JMX к приложению, написанному на Java+]
