1

JBoss AS7 开发人员指南提到了以下从较高优先级到较低优先级的类加载首选项:

1. System Dependencies - These are dependencies that are added to the module automatically by the container, including the Java EE api's.
2. User Dependencies - These are dependencies that are added through jboss-deployment-structure.xml or through the Dependencies: manifest entry.
3. Local Resource - Class files packaged up inside the deployment itself, e.g. class files from WEB-INF/classes or WEB-INF/lib of a war.
4. Inter deployment dependencies - These are dependencies on other deployments in an ear deployment. This can include classes in an ear's lib directory, or classes defined in other ejb jars. 

但是,我不明白#2 和#3 之间的区别。什么样的依赖关系可以归类为上面的第 2 类和第 3 类。对我来说,它们看起来是一样的。

作为将我的 Spring 应用程序从 JBoss 4 迁移到 JBoss 7 的示例,我遇到了我们的应用程序一直在使用的quartz 1.6 jar 的 NoClassDefError。石英 1.6 jar 就在我的应用程序的 WEB-INF/lib 文件夹中。这意味着它正确地属于上述第 3 类。但是网络上的大多数文章都表明我必须将它作为 JBoss 7 模块或在 jboss-deployment-structure.xml 中定义它。为什么 ???

我还阅读了迁移指南并按照这些指南中的说明进行了 TattleTale 练习。但不太明白我该如何处理报告?我阅读了在 JBoss AS7 独立部署中加载第 3 方 JAR 的最佳实践的答案?- 看起来迁移需要相当多的努力。考虑到应用程序可以轻松拥有的众多依赖项,这似乎不是一项简单的任务。有人可以确认一下吗?

我想我需要一个关于

  1. 我要为哪些 jar 创建 module.xml?(可能的候选人 - Spring、Quartz、Apache、C3P0 连接池等)???

  2. 对于哪些 jar,我有一个 jboss-deployment-structure.xml?(这里有什么好的候选人?)

  3. 对于哪些 jar,我将它们留在 web-inf/lib 文件夹中?(应用程序使用某些专门的数学库 - 如 colt.jar、excel 图形库如 - jxls.jar、poi.jar - 这些似乎是不错的候选者)。

4

1 回答 1

0

JBoss AS 版本用于以不同方式管理其库集。早些时候,版本 4.x 用于将核心服务器库定义到 JBOSS_HOME/server 库中。此后,每个服务器定义都有其特定的库到 server//lib 文件夹中。

JBoss AS 7 遵循真正的模块化方法,弃用了所有早期的方法。服务器引导库现在位于应用程序服务器的根目录。在那里您可以找到 jboss-modules.jar 存档,这是您基于 JBoss 模块引导新的应用程序服务器内核所需的全部内容。

我要为哪些 jar 创建 module.xml?(可能的候选人 - Spring、Quartz、Apache、C3P0 连接池等)???

如果有任何依赖 jar 可以创建为模块并在 module.xml 中定义。您还需要定义定义库的依赖关系。

前任。

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="rezg.rezg-dto">
    <dependencies>
        <module name="org.apache.log4j" />
    </dependencies>
   <resources>
       <resource-root path="rezg-dto-1.0.0.jar"/>
   </resources>
</module>

连接池可以配置为一个模块,安装新模块的过程需要复制相应模块路径中的 .jar 库并添加一个 module.xml 文件,该文件声明模块及其依赖项。

对于哪些 jar,我有一个 jboss-deployment-structure.xml?(这里有什么好的候选人?)

所有的依赖 jars 都应该在这里定义。您也可以在 MANIFEST.MF 或 Standalone.xml 中定义。

对于哪些 jar,我将它们留在 web-inf/lib 文件夹中?(应用程序使用某些专门的数学库 - 如 colt.jar、excel 图形库如 - jxls.jar、poi.jar - 这些似乎是不错的候选者)。

如果有任何罐子只在你的耳朵或战争中使用,那么这些罐子可以在 WEB-INF/lib 中定义。但是,建议用作模块。

于 2013-02-12T11:31:15.657 回答