0

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

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

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

4

1 回答 1

1

您可以尝试将以下内容添加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 AS 6 已经过时了,并且有很多问题没有解决。您必须看到使用更新版本(Wildfly 或 JBoss EAP 6)的可能性。

于 2014-11-27T12:35:14.893 回答