Привет всем в этом блоге, вот четвертый пост из серии Quarkus! (Кстати, посмотрите наш вебинар «Это Quarkus — родной Java-фреймворк Kubernetes» .
Покажем как начать с нуля или перенесем готовые решения)
Предыдущий пост речь шла о том, как 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 и мы видим это:
Рис.
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 и мы видим это:
Рис.
2. Оригинальный Hello World от JBoss EAP. Внесение изменений
Измените входной параметр createHelloMessage(String name) с World на Marco: writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");
Снова выполните следующую команду: $ mvn clean install wildfly:deploy
Затем обновляем страницу в браузере и видим, что текст изменился:
Рис.
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 отвечает за упаковку приложения и обеспечение режима разработки.
- Собственный профиль для создания исполняемых файлов приложений.
- Мы вынимаем тег из блок и поместите его над ярлык.
Так как на следующем шаге мы удалим блок, нам нужно сохранить .
- Мы удаляем блокировать, потому что при работе с Quarkus этому приложению больше не понадобится родительский pom от JBoss.
- Добавить тег и поместите его под ярлык.
Вы можете указать желаемый номер версии.
- Мы удаляем тэг, так как это приложение уже не WAR, а обычный JAR.
- Мы модифицируем следующие зависимости:
- Мы меняем зависимость javax.enterprise:cdi-api на io.quarkus:quarkus-arc, удаляя предоставил , поскольку (согласно документации) это расширение Quarkus обеспечивает внедрение зависимостей CDI.
- Изменяем зависимость org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec на io.quarkus:quarkus-undertow, удаляя предоставил , поскольку (согласно документации) это расширение Quarkus обеспечивает поддержку сервлетов 'ov.
- Мы удаляем зависимость org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec, поскольку она поставляется с зависимостями, которые мы только что изменили.
Обратите внимание, что приведенная выше команда 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).
этот раздел руководства).
Примечание: Этот шаг ожидаемо приведет к ошибке, поскольку мы еще не внесли все необходимые изменения.
Теперь давайте запустим команду, чтобы увидеть, как она работает: $ .
/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
-
Методы Решения Проблем Цветового Зрения
19 Oct, 24 -
Skype Выпустил Версию Для Бизнеса
19 Oct, 24 -
Визуальный Поиск В Стиле Apple
19 Oct, 24 -
Как Отправить Idoc Из Sap Mii В Sap Erp
19 Oct, 24