Java JBoss类加载父级上次加载

Java JBoss类加载父级上次加载,java,jboss,classloader,Java,Jboss,Classloader,我想了解上次在JBoss应用服务器中加载应用程序的情况。我们在JBoss 4.2.1 GA中部署了一个遗留应用程序,我们正在尝试上次加载的父应用程序 我指的是这个问题。 上次我想学一个家长。因此,我们使用maven jar插件和配置->addDefaultImplementationEntries=true创建了简单的maven jar包应用程序。我已经从同一个jar创建maven应用程序创建了2个jar版本1.0.0和1.0.1。jar具有单个类TestClass和一个简单的字符串返回方法,该

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

我指的是这个问题。 上次我想学一个家长。因此,我们使用maven jar插件和配置->addDefaultImplementationEntries=true创建了简单的maven jar包应用程序。我已经从同一个jar创建maven应用程序创建了2个jar版本1.0.0和1.0.1。jar具有单个类TestClass和一个简单的字符串返回方法,该方法返回从中加载类的jar版本。 我想要体验的是java2ClassLoadingCompliance的使用。我已经将1.0.0JAR版本打包在server/deploy/MyApplication/WEB-INF/lib(我的WEB应用程序是一个简单的servlet应用程序,它调用类的方法,从而打印从中调用jar的版本号)和server/lib中的1.0.1JAR版本

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

我试过以下方法

  • meta inf文件夹中没有任何jboss-web.xml
  • 我尝试在META-INF中引入jboss-we.xml,并使用java2ClassLoadingCompliance=false执行相同的操作
  • 使用java2ClassLoadingCompliance=true 应用程序库中的所有时间类都将由应用程序加载

    我的jboss-web.xml看起来像

    
    com.example:archive=JBossClassLoadingTestServlet-0.0.1-SNAPSHOT.ear
    java2ParentDelegation=true
    

    有人能帮我理解JBoss中的上一个配置吗?我在这里犯的错误是什么,总是从应用程序库加载类?

    我担心您的链接与您的实验不太相关。它与EAR部署更相关,在EAR部署中存在多模块部署,需要多个版本的库来隔离

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

    以下是来自

    还建议应用程序类加载器的实现如下 WAR中打包的类和资源优先于 驻留在容器范围的库jar中的类和资源

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

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

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

  • 系统依赖项—这些依赖项由容器(包括JavaEEAPI)自动添加到模块中
  • 用户依赖项—这些依赖项是通过JBoss-deployment-structure.xml或通过Dependencies:manifest条目添加的
  • 本地资源—打包在部署本身内部的类文件,例如来自war的WEB-INF/classes或WEB-INF/lib的类文件
  • 部署间依赖关系-这些依赖关系与ear部署中的其他部署有关。这可以包括ear的lib目录中的类,或者在其他EJB JAR中定义的类 相关的:


    哦,天哪,JBoss 4.2,你怎么了-o
    <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>