gpt4 book ai didi

java - JBoss ClassLoading Parent-Last 加载

转载 作者:搜寻专家 更新时间:2023-11-01 03:47:28 25 4
gpt4 key购买 nike

我想了解应用程序 JBoss 应用程序服务器中的 parent-last 加载。我们在 JBoss 4.2.1 GA 中部署了一个遗留应用程序。为此,我们正在尝试 parent-last 加载。

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

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

我试过以下方法

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

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

我的 jboss-web.xml 看起来像 reference

<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 中的 parent-last 配置吗?我在这里总是加载应用程序库中的类的错误是什么?

最佳答案

恐怕您的链接与您的实验关系不大。与EAR部署相关较多,存在多模块部署,需要多版本库隔离。

在您的情况下,您只需覆盖一个 Jar 中的 lib。

以下来自Servlet Spec:

It is recommended also that the application class loader is implemented so that classes and resources packaged within the WAR are loaded in preference to classes and resources residing in container-wide library JARs.

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

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

In order of highest priority to lowest priority

  1. System Dependencies - These are dependencies that are added to the module automatically by the container, including the Java EE APIs.
  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.

相关:

关于java - JBoss ClassLoading Parent-Last 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42304170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com