首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBoss ClassLoading父-最后加载

JBoss ClassLoading父-最后加载
EN

Stack Overflow用户
提问于 2017-02-17 17:36:46
回答 1查看 2.3K关注 0票数 4

我想了解父级-在应用程序JBoss应用服务器中加载的最后一个。我们在JBoss 4.2.1GA中部署了一个遗留应用程序。我们正在尝试最后一次加载父程序。

我指的是这个链接。我想学习一位家长的最后一次加载。因此,使用maven - jar插件和配置-> addDefaultImplementationEntries = true创建了简单的maven jar包应用程序。我从同一个jar创建maven应用程序中创建了2个jar版本1.0.0和1.0.1。jar只有一个类TestClass和一个简单的字符串返回方法,该方法返回加载类的jar版本。我想体验java2ClassLoadingCompliance的使用。我已经在服务器/部署/MyApplication/ web /lib中打包了1.0.0jar版本(我的web应用程序是一个简单的servlet应用程序,它调用类的方法,从而打印从其中调用jar的版本号)。以及服务器/lib中的1.0.1JAR版本。

备注:从逻辑上讲,在应用程序中使用jar的旧版本并使用服务器库中的更新版本覆盖jar是没有意义的,而只是想体验类的加载。

我试过以下几种方法

  1. 在meta文件夹中没有任何JBos-web.xml。
  2. 我尝试在META中引入jboss-we.xml,并对java2ClassLoadingCompliance = false做同样的操作。
  3. 使用java2ClassLoadingCompliance = true。

应用程序库中的所有时间类都将由应用程序加载。

我的jBos-web.xml看起来像参考文献

代码语言:javascript
复制
<jboss-web>
   <class-loading java2ClassLoadingCompliance="true">
      <loader-repository>
         com.example:archive=JBossClassLoadingTestServlet-0.0.1-SNAPSHOT.ear
         <loader-repository-config>java2ParentDelegation=true</loader-repository-config>
      </loader-repository>
   </class-loading>
</jboss-web>

有人能帮我理解JBoss中的父级配置吗?我在这里做的错误是,总是加载来自应用程序库的类。

EN

回答 1

Stack Overflow用户

发布于 2017-03-04 13:58:44

恐怕你的链接与你的实验没有这么大的关系。在EAR部署中,存在多模块部署,需要多个版本的lib来隔离,这与EAR部署有更多的关系。

在您的例子中,您只需在一个Jar中重写lib。

以下是来自Servlet规范:

还建议实现应用程序类加载器,以便优先加载包装在WAR中的类和资源,而不是驻留在容器范围的库JAR中的类和资源。

因此,JBoss遵循规范,它总是首先加载应用程序库。

我没有找到这样的旧版本文档,但它应该类似于AS7

按最高优先级到最低优先级的顺序

  1. 系统依赖项--这些依赖项是容器自动添加到模块的依赖项,包括Java。
  2. 用户依赖项--这些依赖项是通过JBoss-deployment-structure.xml或通过依赖项:清单条目添加的。
  3. 本地资源-类文件打包在部署本身中,例如来自WEB/ Class或war的WEB/lib的类文件。
  4. 部署间依赖关系--它们依赖于ear部署中的其他部署。这可以包括ear的lib目录中的类,或者在其他EJB中定义的类。

相关信息:

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

https://stackoverflow.com/questions/42304170

复制
相关文章

相似问题

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