ear/lib 中 jars 的类加载顺序

wildfly order of classloading for jars in ear/lib

我有以下部署到 WildFly 9.0.2 的 EAR 结构

root.ear
    |-ejb1.jar
    |-ejb2.jar
    |-lib/
         |-libA.jar
         |-libB.jar

libA.jar和libB.jar都具有相同的class。我无权修改 libB.jar,我需要两个 EJB 模块从 libA.jar 中选择 class。

如何像我们对 classpath 那样通过按要求对 jar 进行排序来强制执行此操作?

如果您的 EJB jar 需要访问两个 jar 中的 classes,那么您必须从 libB.jar.

中删除不需要的 class

在 class 可见性方面,EAR 库目录中的所有 jar 都被认为是同一个模块。这是 Java EE 规范规定的。

可能 在每个 EJB jar 中向 MANIFEST.MF 文件添加一个 Class-路径条目:

Class-路径:lib/libA.jar lib/libB.jar