从 jboss AS 6 类加载中排除 jar



我有一场使用 errai-bus 的战争,它依赖于番石榴 14.0.1。我正在使用 Jboss 部署该应用程序,但是当我这样做时,Jboss 使用的是番石榴的焊接版本,即番石榴 r6(非常旧)。这会导致可怕的类加载问题,并且 errai-bus 完全无法工作。

即使我在pom中将番石榴14.0.1声明为顶级依赖项,它仍然使用番石榴r6。如何阻止 Jboss 为我的战争加载错误的番石榴版本?

我试图查找有关如何在 Jboss AS 6 中使用类加载器文件执行此操作的信息,但我似乎找不到任何文档。

您可以

尝试将以下jboss-classloading.xml添加到WEB-INF文件夹中:

<classloading xmlns="urn:jboss:classloading:1.0"
              name="mywar.war"
              domain="mywar_domain" 
              parent-domain="Ignored"
              export-all="NON_EMPTY"
              import-all="true">
</classloading>

在这种情况下,将战争的类加载器放在与未定义自己域的所有其他应用程序共享的mywar_domain中。还可以选择查看其他应用程序导出的所有其他类import-all并将我们所有的类公开给其他类export-all

部署此文件时,您得到的是 Web 应用程序类装入器将充当顶级类装入器,因此不会与服务器库中的相同类发生冲突。

另请参阅:

  • JBoss 5 - 类加载
  • 揭开 JBoss5 jboss-classload.xml 文件的神秘面纱

无论如何,JBoss AS 6已经过时了,并且有很多错误未解决。您必须看到使用较新版本(Wildfly或JBoss EAP 6)的可能性。

最新更新