Santosh 给出了正确的回应,但让我澄清一些关于 weblogic 与 jboss 的问题。
JBOSS 和 WebLogic 有不同的类加载器机制。让我澄清一下:
1.为什么要显化?
Java-Oracle 回复:您可能需要在 JAR 文件中引用其他 JAR 文件中的类。
2。为什么要在 EAR/WAR 应用程序上显示?
Oracle Weblogic 回复:WebLogic Server 支持可选包,如 Java EE 5.0 规范第 8.2 节可选包支持中所述,版本控制在可选包版本中描述。可选包提供与 Java EE 库类似的功能,允许您在多个应用程序之间轻松共享单个 JAR 文件。与 Java EE 库一样,可选包必须首先通过将关联的 JAR 文件部署为可选包来向 WebLogic Server 注册。注册包后,您可以部署在其清单文件中引用该包的 Java EE 模块。
可选包与 Java EE 库不同,因为可选包可以从任何 Java EE 模块(EAR、JAR、WAR 或 RAR 存档)或展开的存档目录中引用。 Java EE 库只能从有效的企业应用程序中引用。
[...]
任何 Java EE 应用程序或模块都可以引用可选包(使用 META-INF/MANIFEST.MF),而只有企业应用程序和 Web 应用程序可以引用共享 Java EE 库(使用 weblogic-application.xml 或 weblogic.xml )
3.那为什么我们不用声明 java-ee-api.jar, jsf, jsp, ...
Jboss 回复:下表列出了作为依赖项自动添加到部署中的模块以及触发依赖项的条件。
Implicit_Module_Dependencies
4.不是所有的模块都被 JBOSS 加载了吗?
Jboss 回复:本章将讨论打包为 jar 的应用程序如何声明它们依赖于一个或多个模块:
Dependencies: oracle.sql, another.module.with.version:1.0
Manifest module information
4.1 或者定义jboss-deployment-structure.xml
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="oracle.sql" export="TRUE" />
</dependencies>
</deployment>
</jboss-deployment-structure>
Add anExplicit Module Dependency to a Deployment
4.2 与 maven
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<Dependencies>org.javassist, org.apache.velocity</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
见:Generate MANIFESTMF entries using Maven
见:How do you generate module dependencies in MANIFEST.MF for JBoss AS 7 with maven?
7.为什么我们之前没有得到这些重要信息?
使用新的组织模型,JBOSS 7/8 放弃了著名的类加载层次结构,转而使用基于模块化单元的更简单的模型 (JBoss Modules Project)。架构模块的引入(除了即将在 JDK 中引入,由于 OSGi 等外部项目,此时非常流行)实际上扩展了用于封装 Java EE 应用程序的模型;然后,一个模块可以是一个库、一个类的集合,或者更一般地说是与单个类加载器相关联的资源的集合:因此,与过去不同的是,类加载器是在一组类的分层组织下收集的,点这里的观点正好相反。
见:Class Loading in WildFly