Quarkus: Модернизация Приложений С Использованием Helloworld В Качестве Примера Из Краткого Руководства Jboss Eap

Привет всем в этом блоге, вот четвертый пост из серии Quarkus! (Кстати, посмотрите наш вебинар «Это Quarkus — родной Java-фреймворк Kubernetes» .

Покажем как начать с нуля или перенесем готовые решения)

Quarkus: модернизация приложений с использованием Helloworld в качестве примера из краткого руководства JBoss EAP

Предыдущий пост речь шла о том, как Quarkus объединяет MicroProfile и Spring. Напомним, что Кваркус позиционируется как «сверхбыстрая субатомная Java», он же «Kubernetes-ориентированный Java-стек, адаптированный для GraalVM и OpenJDK HotSpot и собранный из лучших библиотек и стандартов».

Сегодня мы покажем, как модернизировать существующие Java-приложения, используя возможности Quarkus, на примере приложения helloworld из репозитория быстрого запуска Red Hat JBoss Enterprise Application Platform (JBoss EAP) , который использует технологии CDI и Servlet 3, поддерживаемые Quarkus. Здесь важно отметить, что и Quarkus, и JBoss EAP подчеркивают использование инструментов, максимально основанных на стандартах.

У вас нет приложения, работающего на JBoss EAP? Нет проблем, его можно легко перенести с вашего текущего сервера приложений на JBoss EAP с помощью Набор инструментов для миграции приложений Red Hat .

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

github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus , в модуле Привет, мир .

При написании этого поста мы использовали Руководства по Кваркусу , по большей части Создание вашего первого приложения и создание Собственный исполняемый файл .



Давайте получим код

Прежде всего, давайте создадим локальный клон репозитория.

Краткое руководство по JBoss EAP :

  
  
  
  
  
  
  
  
  
  
   

$ git clone https://github.com/jboss-developer/jboss-eap-quickstarts.git Cloning into 'jboss-eap-quickstarts'.

remote: Enumerating objects: 148133, done. remote: Total 148133 (delta 0), reused 0 (delta 0), pack-reused 148133 Receiving objects: 100% (148133/148133), 59.90 MiB | 7.62 MiB/s, done. Resolving deltas: 100% (66476/66476), done. $ cd jboss-eap-quickstarts/helloworld/



Давайте посмотрим, как работает оригинальный helloworld.

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

Поэтому сначала давайте посмотрим на это приложение в его исходном виде.

Развертывание helloworld 1. Откройте терминал и перейдите в корень папки JBoss EAP (можно скачать Здесь ), то есть в папку EAP_HOME. 2. Запустите сервер JBoss EAP с профилем по умолчанию:

$ EAP_HOME/bin/standalone.sh

Примечание: В Windows для его запуска используется сценарий EAP_HOME\bin\standalone.bat. Через пару секунд в логе должно появиться что-то вроде этого:

[org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) started in 3315ms - Started 306 of 527 services (321 services are lazy, passive or on-demand)

3. Открыть в браузере 127.0.0.1 :8080 и мы видим это:

Quarkus: модернизация приложений с использованием Helloworld в качестве примера из краткого руководства JBoss EAP

Рис.

1. Домашняя страница JBoss EAP. 4. Следуйте инструкциям в руководстве.

Создание и развертывание краткого руководства : разверните helloworld и запустите (из корневой папки проекта) следующую команду:

$ mvn clean install wildfly:deploy

После успешного выполнения этой команды мы увидим в журнале что-то вроде следующего:

[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8.224 s

Итак, первое развертывание приложения helloworld на JBoss EAP заняло чуть больше 8 секунд. Тестирование helloworld Действуем строго по инструкции Доступ к приложению , открыть в браузере 127.0.0.1 :8080/helloworld и мы видим это:

Quarkus: модернизация приложений с использованием Helloworld в качестве примера из краткого руководства JBoss EAP

Рис.

2. Оригинальный Hello World от JBoss EAP. Внесение изменений Измените входной параметр createHelloMessage(String name) с World на Marco:

writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");

Снова выполните следующую команду:

$ mvn clean install wildfly:deploy

Затем обновляем страницу в браузере и видим, что текст изменился:

Quarkus: модернизация приложений с использованием Helloworld в качестве примера из краткого руководства JBoss EAP

Рис.

3. Привет, Марко в JBoss EAP. Откатите развертывание helloworld и закройте JBoss EAP. Это необязательно, но если вы хотите отменить развертывание, вы можете сделать это с помощью следующей команды:

$ mvn clean install wildfly:undeploy

Чтобы закрыть экземпляр JBoss EAP, просто нажмите Ctrl+C в окне терминала.



Обновление helloworld

Теперь давайте модернизируем исходное приложение helloworld. Создать новую ветку Создаем новую рабочую ветку после завершения проекта быстрого старта:

$ git checkout -b quarkus 7.2.0.GA

Изменение файла pom.xml Изменять приложение мы начнем с файла pom.xml. Чтобы Quarkus мог вставлять в него блоки XML, выполните следующую команду в папке helloworld:

$ mvn io.quarkus:quarkus-maven-plugin:0.23.2:create

При написании этой статьи использовалась версия 0.23.2. Quarkus часто выпускает новые версии, узнать какая версия самая последняя можно на сайте github.com/quarkusio/quarkus/releases/latest .

Приведенная выше команда вставит в pom.xml следующие элементы:

  • свойство, указывающее используемую версию Quarkus.
  • блок для импорта Quarkus BOM (спецификации материалов), чтобы не добавлять версию для каждой зависимости Quarkus.
  • Плагин quarkus-maven отвечает за упаковку приложения и обеспечение режима разработки.

  • Собственный профиль для создания исполняемых файлов приложений.

Кроме того, мы вручную вносим в pom.xml следующие изменения:
  1. Мы вынимаем тег из блок и поместите его над ярлык.

    Так как на следующем шаге мы удалим блок, нам нужно сохранить .

  2. Мы удаляем блокировать, потому что при работе с Quarkus этому приложению больше не понадобится родительский pom от JBoss.
  3. Добавить тег и поместите его под ярлык.

    Вы можете указать желаемый номер версии.

  4. Мы удаляем тэг, так как это приложение уже не WAR, а обычный JAR.
  5. Мы модифицируем следующие зависимости:
    1. Мы меняем зависимость javax.enterprise:cdi-api на io.quarkus:quarkus-arc, удаляя предоставил , поскольку (согласно документации) это расширение Quarkus обеспечивает внедрение зависимостей CDI.
    2. Изменяем зависимость org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec на io.quarkus:quarkus-undertow, удаляя предоставил , поскольку (согласно документации) это расширение Quarkus обеспечивает поддержку сервлетов 'ov.
    3. Мы удаляем зависимость org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec, поскольку она поставляется с зависимостями, которые мы только что изменили.

Версия файла pom.xml со всеми изменениями находится по адресу github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml .

Обратите внимание, что приведенная выше команда mvn io.quarkus:quarkus-maven-plugin:0.23.2:create не только изменяет файл pom.xml, но и добавляет в проект ряд компонентов, а именно следующие файлы и папки:

  • Файлы mvnw и mvnw.cmd и папка .

    mvn: Maven Wrapper позволяет запускать проекты Maven определенной версии Maven без установки этой версии.

  • Папка Docker (в каталоге src/main/): содержит примеры файлов Dockerfile для собственного режима и режима jvm (вместе с файлом .

    dockerignore).

  • Папка Resources (в каталоге src/main/): она содержит пустой файл application.properties и образец стартовой страницы Quarkus index.html (более подробную информацию см.

    в разделе Запуск модернизированного helloworld).

Запустить приветмир Для тестирования приложения мы используем quarkus:dev, который запускает Quarkus в режиме разработки (подробнее см.

этот раздел руководства).

Режим разработки ).

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

Теперь давайте запустим команду, чтобы увидеть, как она работает:

$ .

/mvnw compile quarkus:dev [INFO] Scanning for projects. [INFO] [INFO] ----------------< org.jboss.eap.quickstarts:helloworld >---------------- [INFO] Building Quickstart: helloworld quarkus [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 2 resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld --- Listening for transport dt_socket at address: 5005 INFO [io.qua.dep.QuarkusAugmentor] Beginning quarkus augmentation INFO [org.jbo.threads] JBoss Threads version 3.0.0.Final ERROR [io.qua.dev.DevModeMain] Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors

Теги: #разработка Linux #виртуализация #открытый исходный код #Kubernetes #java #Red Hat #quarkus

Вместе с данным постом часто просматривают: