我们的组织是Mule 4的新成员。在部署新api时遇到一些问题。我们的某些API大约需要10分钟才能部署。我们认为,这种延迟部分是由于Mule 4 api相比Mule 3部署而言,jar更大,因为所有相关的jar都打包在部署jar中。有时,新的部署会导致崩溃,并且服务器上的所有api都必须重新启动。
在Mule 3中,我相信您可以拥有多个api共享通用依赖项。这使我们可以使用更小的jar来部署新的api。除了领域项目外,在Mule 4中还有其他方法可以做到这一点吗?
我们尝试使用命令“ mvn package -DlightweightPackage”包装轻型罐子,但无法部署它们。即使我们将所需的存储库结构放在/ lib / mule / repository中,轻量级打包的JAR也不再包含classloader-model.json来配置应用程序在哪里寻找它的存储库(依赖项),因此它们将无法正确部署。 / p>
但是,我们已经使用默认程序包,在服务器关闭后从爆炸的JAR中删除了资源(依赖关系树),将依赖关系树移至/ lib / mule / resources(共享),然后在类加载器中修改了“ uri”爆炸应用程序(JAR)中的-model.json。然后,我们启动了服务器,应用程序运行正常。这似乎可行,但是一旦我们部署了某些东西,就会迫使我们启动和停止服务器。我们希望能够继续进行热部署的修补程序。
除了增加我们服务器上的资源之外,是否还有其他人遇到此问题或对如何解决此问题有任何想法?
谢谢!
答案 0 :(得分:0)
您可以使用域来共享依赖关系。连接器和库都可以共享。
请注意,使用您描述的方法是无证的和不受支持的。它可能会消失或在将来的版本中更改。我强烈建议避免使用它。
答案 1 :(得分:0)
我写了一个maven插件,它替换了所有的repository / ** / *。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/c-a-services/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