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

问题描述

我正在使用:

  • 野蝇21
  • Java 11

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

但是我注意到在Wildfly中运行的时候,虽然运行没有问题,但是和之前不是模块化的时候一样,但是好像应用服务器没有考虑现在是模块化的应用,没有使用modulepath运行应用程序,但类路径。因此,在运行时,应用程序的模块化特性被忽略了。

有没有办法指示应用服务器以模块化方式运行应用程序,使用模块路径而不是类路径?

遗憾的是,我们不得不被 Wildfly 等应用服务器锁定,阻止我们在应用程序运行时使用如此重要的 Java 功能(模块)。

解决方法

虽然 Wildfly 不支持运行模块化战争,但您可以查看 Piranha Cloud。

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

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

PS:我是 Piranha Cloud 开发人员