уменьшение размера jar-файла развертывания в Mule 4

Наша организация новичок в Mule 4. У нас возникли некоторые проблемы при развертывании новых API. Некоторые из наших api развертываются примерно за 10 минут. Мы полагаем, что эта задержка частично связана с гораздо более крупными jar-файлами для развертываний Mule 4 api по сравнению с Mule 3, поскольку все зависимые jar-файлы упакованы в jar-файл развертывания. Иногда новое развертывание вызывает сбой, и все api на сервере придется перезапускать.

Я считаю, что в Mule 3 у вас может быть несколько общих зависимостей, разделяющих api. Это позволило нам иметь гораздо меньшие банки для развертывания нового API. Есть ли другой способ, кроме доменных проектов, сделать это в Mule 4?

Мы пробовали упаковывать легкие jar-файлы с помощью команды «mvn package -DlightweightPackage», но не смогли их развернуть. Даже если мы поместим необходимую структуру репозитория в / lib / mule / repository, облегченный упакованный JAR больше не будет содержать classloader-model.json, чтобы настроить приложение, где искать его репозиторий (зависимости), чтобы они не могли развернуться должным образом.

Однако мы использовали пакет по умолчанию, удалили ресурсы (дерево зависимостей) из развернутого JAR после выключения сервера, переместили дерево зависимостей в / lib / mule / resources (shared), а затем мы изменили «uri» в модели загрузчика классов. json в развернутом приложении (JAR). Затем мы запустили сервер, и приложение работает нормально. Казалось, это сработало, но заставляло нас запускать и останавливать сервер каждый раз, когда мы что-то развертывали. Мы надеялись на исправление, которое по-прежнему позволяло бы нам выполнять горячее развертывание.

Кто-нибудь еще сталкивался с этой проблемой или есть какие-либо мысли о том, как решить эту проблему, кроме увеличения ресурсов на нашем сервере?

Спасибо!


person K. Aeschliman    schedule 23.01.2019    source источник


Ответы (2)


Вы можете делиться зависимостями с помощью домена. И соединители, и библиотеки могут быть общими.

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

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

person aled    schedule 20.04.2019

Я написал плагин maven, который заменяет все файлы репозитория / ** / *. Jar, которые доступны в локальном репо, на заполнитель, а затем копирует файлы обратно в mule-application.jar.

mvn io.github.c-a-services:mule4-jar-size-reducer-maven-plugin:LATEST:jar-compress

и позже

mvn io.github.c-a-services:mule4-jar-size-reducer-maven-plugin:LATEST:jar-refill

Дополнительные параметры и автоматизацию см.

https://github.com/ca-services/mule4-jar-size-reducer-maven-plugin#mule4-jar-size-reducer-maven-plugin

Самому файлу больше не нужно столько места: ;-)

17:17:02 [INFO] refdata-2019.9.1-12-SNAPSHOT-mule-application.jar Size=81743321
17:17:02 [INFO] refdata-2019.9.1-12-SNAPSHOT-mule-application.zip Size=960544
person Stefan Cordes    schedule 01.11.2019