Рубрики
Без рубрики

Создание собственных изображений кварков. Ты тоже можешь это сделать!

Если вы читаете страницу родной сборки Quarks, это должно быть легко: включить – Родной и вот мы идем! Мы… Помеченный java, кварками, aws.

Если вы читаете страницу Quarks native сборки, это должно быть легко: включите -- Родной и вот мы идем! Ну… не так быстро. Совсем не так быстро, как они узнают на другой странице “Советы уроженца Кваркуса” , к сожалению, не связанной с первой (так что удачи в поиске в Google). И, мальчик, тебе нужны эти советы…

У меня это приложение счастливо работало в течение нескольких месяцев, и хотя в начале были некоторые признанные проблемы с собственным поколением в Windows, в настоящее время общее ожидание состояло в том, что оно должно работать. Поэтому я обновил все зависимости и начал болезненное трехдневное путешествие, но, эй, без боли нет выгоды, верно?

Вот что для этого требовалось:

  1. Во-первых, у вас ведь установлен Docker, верно? И включил генерацию контейнера в параметрах JVM с

    хорошо ? Что ж, если вы тоже не хотите проходить через трудности установки GraalVM (я это сделал, получил футболку), используйте параметр build JVM для создания изображения с оправкой (упоминается на родной странице Quarkus, без каких-либо объяснений, что такое “Теги оправки” )

  2. Говоря о параметрах JVM, генерация скоро завершится сбоем из-за нехватки памяти. Кваркус по умолчанию совершает ошибки. Добавьте этот параметр JVM для увеличения кучи Java во время генерации:

  3. На самом деле одной из первых ошибок, которые вы увидите, будет жалоба на то, что у вас нет src/assembly/zip.xml файл, упомянутый в собственном профиле Maven. Хорошим началом будет это:

  4. Рано или поздно у вас определенно появится исключение в журналах, которое он не может найти org.apache.commons.ведение журнала. LogFactoryИмпл . Независимо от того, как вы добавите его в свой pom, кварки будут творить некоторую магию отражения и постоянно терпеть неудачу. Просто забудьте commons-ведение журнала и используйте рекомендованный JBoss logmanager.

  5. Знаете ли вы, что Quarks предлагает свои собственные клиенты Elasticsearch? Я тоже этого не сделал, и мне пришлось переключиться на их дистрибутив вместо официального Elasticsearch. К счастью, тот же API, более чистые зависимости (и никаких общих записей)

  6. Этот конструктор Elasticsearch создаст статический клиент (настроенный через application.properties ), который никому не нужен. Я имею в виду, что если вы хотите настроить хост во время выполнения, если вы хотите подписать запрос при доступе к кластеру AWS Elasticsearch… вы внезапно получите неоднозначную инъекцию. Это было легко исправить – создайте и используйте свой собственный @Named клиент.

  7. Не удается загрузить реализацию HTTP от любого поставщика в цепочке? Это связано с тем, что многие клиенты AWS SDK v2 по какой–либо причине включают HTTP-клиент Apache только в качестве зависимости от времени выполнения – и сам Quarkus делает то же самое (в вышеупомянутом клиенте Elasticsearch). Так что добавьте его в свой pom И упомяните его КОНКРЕТНО в здании ваших клиентов!

    и код Java:

    Ах да, не забудьте исключить зависимость commons-logging – это маленькое надоедливое отродье продолжает ползти назад.

  8. Теперь настало время для сбоя вашей среды выполнения из-за отсутствия прокси-серверов, точнее, потому что “создание прокси-классов во время выполнения не поддерживается” . Не спрашивайте, почему Кварки не справляются с этим при создании собственных изображений, или, по крайней мере, предупреждайте об этом. Поэтому просто добавьте в свой application.properties эту строку:

    и новый файл proxies.json в вашем src/main/ресурсах , содержащий именно те интерфейсы, о которых упоминалось в сообщении об ошибке. Мой был:

    Проблема упоминается на странице советов по использованию Quarks, но вы остаетесь наедине с собой, пытаясь понять, ЧТО и КАК поместить в указанный файл.

  9. Пока мы находимся в application.properties , если в вашем коде есть какое-либо SSL-соединение (и если вы не используете Hello World, у вас будет), также поместите эту строку там:

Итак, это было мое приключение до сих пор. Приложение работает сейчас, время запуска сократилось с 3,2 с до 0,38 с и вдвое сократило объем памяти… Я жду следующего сюрприза.

Оригинал: “https://dev.to/sorincostea/building-quarkus-native-images-you-can-do-it-too-2api”