You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JBoss EAP中jaxb_study应用两类为何由不同ModuleClassLoader加载?

问题解答

1. jdom2类的加载逻辑

在WildFly、JBoss这类Java EE容器中,应用的ModuleClassLoader(比如你的deployment.jaxb_study.war)会负责加载WEB-INF/lib下所有普通第三方依赖的类。org.jdom2属于非容器规范的第三方库,它的jar被打包进WAR的WEB-INF/lib目录,自然由应用自身的加载器加载,不会单独为它创建模块加载器——只有容器自带的、被模块化管理的规范API才有独立的模块加载器。

2. javax.transaction类被容器加载的原因

javax.transaction-api是Java EE规范定义的标准API,这类API通常会被容器以模块化方式内置提供。即便你在pom.xml中添加了该依赖,容器的类加载机制会优先使用自身内置的模块加载这些规范类,而非应用WEB-INF/lib里的jar。

这么做是为了保证规范API的版本一致性,避免应用引入的版本与容器兼容版本产生冲突,容器通过类加载优先级规则(容器模块加载器优先级高于应用加载器)实现这一逻辑。

3. 核心结论

  • jdom2没有独立的模块加载器,它的类由应用的ModuleClassLoader加载,这是第三方库的正常加载逻辑。
  • javax.transaction的类由容器模块加载器加载,是容器为保证规范一致性而采取的优先级加载策略。

内容的提问来源于stack exchange,提问作者ericj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 06:32:36