【问题标题】:Wildfly classloading: it's better from modules or from ear dependency?Wildfly 类加载:模块或耳朵依赖更好?
【发布时间】:2017-03-14 14:10:02
【问题描述】:

我有一个包含很多依赖项的 EAR 项目。 有些依赖项很大(超过 4 mb),所以我更喜欢将它们作为模块安装在 wildfly 上,并在 jboss-deployment.xml 中添加模块依赖项。

例如,我们有 org.mypackage.MyClass,最好从 ear/lib 目录中的常规依赖项或从 JBOSS_HOME/module 加载该类?有没有效率损失?

【问题讨论】:

    标签: java wildfly


    【解决方案1】:

    根据 Wilfly Doc:

    类加载优先级

    Java 应用程序中的一个常见错误来源是在部署中包含同样由容器提供的 API 类。这可能会导致创建类的多个版本并且部署无法正确部署。为了在 WildFly 中防止这种情况,模块依赖项以特定顺序添加,以防止这种情况发生。

    按照优先级从高到低的顺序

    • 系统依赖项 - 这些是添加到 由容器自动生成的模块,包括 Java EE api。

    • 用户依赖项 - 这些是通过
      添加的依赖项 jboss-deployment-structure.xml 或者通过Dependencies: manifest 进入。

    • 本地资源 - 在部署中打包的类文件 本身,例如来自 WEB-INF/classes 或 WEB-INF/lib 的类文件 战争。
    • 部署间依赖项 - 这些是其他依赖项 耳部署中的部署。这可以包括一个类 ear 的 lib 目录,或其他 ejb jar 中定义的类。

    更多信息:Class Loading in Wildfly

    【讨论】:

    • 我很想知道这如何回答 OP 最后一段中的两个问题。
    • @SteveC 我想如果在部署间依赖关系之前添加模块,则可以更快地找到类。这是我的意见,我错了吗?
    • 类加载速度通常不是问题,即使在大型应用程序中也是如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 2017-12-16
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多