首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBoss AS7中的类加载问题

JBoss AS7中的类加载问题
EN

Stack Overflow用户
提问于 2012-10-30 16:05:05
回答 1查看 2.4K关注 0票数 1

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

代码语言:javascript
复制
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的一个例子,我遇到了我们的应用程序一直使用的石英1.6JAR的NoClassDefError。石英1.6jar就在我的应用程序的WEB/lib文件夹中。这意味着它正确地属于上文第3类。但是web上的大多数文章都指出,我必须将其作为JBoss 7模块或在jboss-deployment-structure.xml中定义。为什么?

我还阅读了移徙准则,并做了TattleTale练习,就像这些指南中指出的那样。但别太在意我该怎么处理这份报告?我读到了这个在JBoss AS7独立部署中加载第三方JAR的最佳实践?的答案--看起来迁移需要付出相当大的努力。考虑到应用程序可以轻松拥有的众多依赖项,这似乎不是一项快速而琐碎的任务。有人能确认一下吗?

我想我需要一个关于

  1. 我应该为哪个jars创建一个module.xml?(可能的候选对象- Spring、Quartz、Apache、C3P0连接池等)?
  2. 对于哪个jars,我有一个JBos-Deployment-structure.xml?(这里什么是好候选人?)
  3. 对于哪个jars,我应该把它们放在web/lib文件夹中?(应用程序使用某些专门的数学库--如colt.jar、excel图形库(如- jxls.jar、poi.jar )--这些在这里似乎都是不错的人选)。
EN

回答 1

Stack Overflow用户

发布于 2013-02-12 11:31:15

JBoss是用来以不同方式管理它们的库集的发行版。更早的时候,版本4.x被用来将核心服务器库定义为JBOSS_HOME/server库。此后,每个服务器定义都将其特定的库放入server//lib文件夹中。

JBoss AS 7遵循真正的模块化方法,不推荐所有早期的方法。服务器引导库现在位于应用程序服务器的根目录。在这里,您可以找到JBoss-Modes.jar归档文件,这是根据JBoss模块引导新应用程序服务器内核所需的全部内容。

我应该为哪个jars创建一个module.xml?(可能的候选对象- Spring、Quartz、Apache、C3P0连接池等)?

如果存在依赖关系jars,则可以将其创建为模块并在module.xml中进行定义。此外,还需要定义定义库的依赖项。

例如。

代码语言:javascript
复制
<?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文件,该文件声明模块及其依赖项。

对于哪个jars,我有一个JBos-Deployment-structure.xml?(这里什么是好候选人?)

所有依赖jars都应该在这里定义。此外,您还可以在MANIFEST.MF或standalone.xml中定义。

对于哪个jars,我应该把它们放在web/lib文件夹中?(应用程序使用某些专门的数学库--如colt.jar、excel图形库(如- jxls.jar、poi.jar )--这些在这里似乎都是不错的人选)。

如果有只在您的ear或war中使用的war,那么可以在WEB/lib中定义这些war。但是,建议将其用作模块。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13143079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档