指示Wildfly将应用程序作为模块化应用程序(Java 9模块)运行



我使用的是:

  • Wildfly 21
  • Java 11

我刚刚经历了模块化(使用Java 9模块)的痛苦,我的Jakarta EEEAR应用程序运行在Wildfly 21上。这个应用程序有一个warjar、ejbjar、utility jar(现在都有一个module-info.java)和其他第三方库。整个应用程序编译良好,没有错误。

但是我注意到,当我在Wildfly中运行它时,虽然它像以前一样没有问题,但它不是模块化的,似乎应用服务器没有考虑到它现在是一个模块化的应用程序,并且没有使用模块路径来运行应用程序,而是类路径。因此,在运行时,应用程序的模块化特性被忽略了。

是否有一种方法可以指示应用服务器使用modulepath将应用程序作为模块化的应用程序运行而不是类路径?

很遗憾,我们不得不被像Wildfly这样的应用服务器锁定,阻止我们在运行时在应用程序中使用如此重要的Java特性(模块)。

虽然Wildfly不支持运行模块化战争,但您可以看看食人鱼云。

Piranha Server本身可以在模块路径中运行,并且可以在新的JPMS层中部署war,尊重所提供的module-info.class。

https://piranha.cloud/blog/2021/20210128_Modular_applications_with_JPMS

PS:我是一个食人鱼云开发人员

相关内容