3.7. 类加载和子部署

3.7.1. 企业存档中的模块和类加载

企业存档(EAR)不作为单一模块加载,如 JAR 或 WAR 部署。它们作为多个唯一模块载入。

以下规则决定了 EAR 中存在的模块:

  • EAR 存档根目录中的 lib/ 目录的内容是一个模块。这称为父模块。
  • 每个 WAR 和 EJB JAR 子部署都是一个模块。这些模块具有与任何其他模块相同的行为,以及对父模块的隐式依赖项。
  • Subdeployments 对父模块和其他任何非 WAR 子部署具有隐式依赖项。

存在对非 WAR 子部署的隐式依赖关系,因为 JBoss EAP 默认禁用子部署类加载器隔离。无论子部署类加载器隔离如何,对父模块的依赖关系都会保留。

重要

没有子部署获得对 WAR 子部署的隐式依赖性。任何子部署都可以像任何其他模块一样,为另一个子部署配置明确的依赖关系。

如果需要严格兼容性,则可启用 Subdeployment 类加载器隔离。这可以在单个 EAR 部署或所有 EAR 部署中启用。Jakarta EE 规范建议,便携式应用不应依赖于子部署相互访问,除非在每个子部署的 MANIFEST.MF 文件中明确声明依赖项为 Class-Path 条目。