Статьи

Игра со Weld-Probe — смотрите все аспекты CDI в одном месте

Weld 3.0.0.Alpha4 был выпущен , пока я сидел в конференц-зале DevConf.CZ. Более или менее рядом с Джозефом Хартингером ( @jozefhartinger ), который рассказал мне о новых потрясающих возможностях этого последнего выпуска за несколько минут до совместного перерыва. Одна особенность, которая действительно привлекла мое внимание, это новый механизм сварного зонда.

Что такое сварка?
Weld является эталонной реализацией CDI: контексты и внедрение  зависимостей для платформы Java EE,  которая является стандартом Java для внедрения зависимостей и управления контекстным жизненным циклом и одной из наиболее важных и популярных частей платформы Java EE.
Weld интегрирован во многие серверы приложений Java EE, такие как WildFly, JBoss Enterprise Application Platform, GlassFish, Oracle WebLogic и другие. Сварка также может использоваться в среде только с сервлетами (Tomcat, Jetty) или простой среде Java SE.
В Weld 3.x отмечены версии на первых этапах эксперимента для следующей версии CDI 2.0, которая будет включена в Java EE 8. Как вы уже могли догадаться, нет предварительно настроенного сервера, готового к запуску любой из следующих Java EE 8 RI независимо от того, на какой стадии они находятся. Особая сварка намного опережает толпу и в наши дни начинает экспериментировать даже с не указанными функциями. Чтобы не мешать команде WildFly 9 с ее улучшениями, последние версии пока НЕ ​​являются ее частью.

Тест-драйв CDI 2.0 с Weld 3.0.0.Alpha4
Для того, чтобы протестировать Weld сегодня, вам нужна стабильная версия WildFly 8.2 и установить ее соответствующим образом Если вы хотите использовать последнюю  версию WildFly 9, для этого тоже есть патч . Давайте  загрузим последнюю версию WildFly 8.2.0.Final  и разархивируем ее в папку по вашему выбору. Следующая необходимая загрузка —  патч Weld 3 Alpha4 для WildFly 8.2 . Патч можно применить с помощью встроенного в патч механизма WildFly:

prebuffer_0gt;/WildFly/bin/jboss-cli.bat|sh --command="patch apply /path/to/wildfly-8.2.0.Final-weld-3.0.0.Alph4-patch.zip"

Успешный результат должен выглядеть так:

{
    "outcome" : "success",
    "result" : {}
}

Теперь вы готовы запустить WildFly. Пожалуйста, имейте в виду, что это не официальный патч! Итак, пока рассмотрим этот простой способ обновить свою версию Weld. Ничего больше. Если вы хотите узнать больше о внесении исправлений в WildFly, загляните в  блог Аруна о внесении исправлений .

prebuffer_2gt;/WildFly/bin/standalone.bat|sh

Теперь пришло время немного поиграть с этим. Хорошее место, чтобы следить за новыми возможностями — это  проект примеров Java EE 8 на GitHub . Все еще в самом начале, у него есть по крайней мере один новый пример CDI 2.0, который можно запустить из коробки. Но я собираюсь показать вам еще одну новую особенность Weld, которая представляет собой новый механизм Weld-Probe. Итак, сначала нам нужно небольшое веб-приложение. Есть несколько примеров в   ветке сварка / ядро ​​/ мастер на Github. Одним из них является известный  пример угадывания чисел .

Weld-Probe отвечает на все ваши вопросы CDI 
Почему мое поле не вводится? Почему мой перехватчик не срабатывает? Какие расширения регистрируют сторонние библиотеки? Вы когда-нибудь задавались подобным вопросом? Создание Weld, удобного для разработчиков и помогающего в устранении неполадок, является одной из основных целей новой версии 3.x. Сегодня я представляю вам новый инструмент под названием Weld Probe. Probe — это встроенный инструмент, который предоставляет подробный обзор внутренних компонентов приложения CDI. Weld Probe имеет веб-интерфейс и поставляется из коробки.

Зонд позволяет легко проверить следующие аспекты CDI. Еще больше запланировано на будущее. 

  • бобы, их свойства, такие как классификаторы, стереотипы и названия
  • график бобовых зависимостей
  • наблюдатели и производители, заявленные бобами
  • перехватчики и декораторы, связанные с бобом
  • расширения
  • информация о текущих контекстных экземплярах
  • отслеживание вызовов и деревьев вызовов

Зонд не предназначен для замены таких инструментов, как отладчик или профилировщик. Это больше о понимании приложения и предоставлении высокого уровня представления о внутренней работе.
Датчик состоит из REST API и клиента по умолчанию (одностраничное приложение). Поэтому он доступен только в веб-приложении. Вы должны явно включить его для предложений разработки только путем добавления параметра инициализации сервлета org.jboss.weld.development и установки его в значение true:

 <context-param> 
        <param-name>org.jboss.weld.development</param-name> 
        <param-value>true</param-value> 
    </context-param> 

Иди, собери пример и разверни его. Теперь вы можете увидеть работающий пример с угадыванием числа. Но это еще не все. Просто измените URL-адрес приложения и добавьте «/ weld-probe» в конец контекста: http: // localhost: 8080 / weld-numberguess / weld-probe, и вы увидите это:

При просмотре навигации сверху отображаются следующие области:

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

Конфигурация
Сварка может быть настроена для каждого приложения через набор свойств. Обзор свойств конфигурации сварного шва и их окончательных значений (полная справочная информация о  конфигурации сварного шва ).

Фасоль
Это представление показывает все бобы, которые знает Weld. Обратите внимание, что также показаны встроенные компоненты и другие спецификации Java EE, которые интегрируются (например, для JSR 352: пакетные приложения для платформы Java). Существуют различные фильтры для поиска интересующих вас bean-компонентов. В деталях bean-компонента показаны все важные атрибуты, объявленные наблюдатели и производители, объявление bean-компонентов для производителей, а также зависимости и зависимости.

Методы наблюдателя
Откройте для себя все зарегистрированные методы наблюдателя, даже те, которые объявлены в расширениях или из других спецификаций Java EE.

Контексты
Это представление позволяет вам проверять экземпляры компонентов в контексте приложений и сеансов.

Деревья
вызовов Наконец, дерево вызовов показывает все вызовы в данной точке входа. Где точка входа — это первый вызов бизнес-метода, записанный монитором в определенном потоке.

Вот и все. Если вы что-то упустили или хотели бы оставить комментарии к существующим функциям, не стесняйтесь вносить свой вклад, подав проблему в  Weld JIRA . Имейте в виду, что эта работа все еще находится в процессе разработки и будет изменяться и улучшаться с каждой новой версией.

CDI 2.0 хочет тебя!
Но это еще не все! CDI 2.0 нуждается в вашей помощи и вкладе. У вас есть несколько способов внести свой вклад, и ведущий по спецификации Антуан написал отличную  статью в блоге о том, что вы можете сделать и как принять участие . Также не стесняйтесь связаться с  сообществом сварщиков  и оставить свой отзыв.