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 的最佳实践的答案?- 看起来迁移需要相当多的努力。考虑到应用程序可以轻松拥有的众多依赖项,这似乎不是一项简单的任务。有人可以确认一下吗?
我想我需要一个关于
我要为哪些 jar 创建 module.xml?(可能的候选人 - Spring、Quartz、Apache、C3P0 连接池等)???
对于哪些 jar,我有一个 jboss-deployment-structure.xml?(这里有什么好的候选人?)
对于哪些 jar,我将它们留在 web-inf/lib 文件夹中?(应用程序使用某些专门的数学库 - 如 colt.jar、excel 图形库如 - jxls.jar、poi.jar - 这些似乎是不错的候选者)。