0

我们使用 Jboss 5.1,我们在其中部署了几个应用程序。现在,Jboss 在其 common/libs 中有一个 hibernate jar 版本。我们的一个应用程序使用更新版本的 hibernate jars。因此,我们在部署在 Jboss 中的 war 中打包了依赖 jar。应用程序部署得很好,但是当我们尝试进入时,它会抛出以下异常。

我的怀疑是 Jboss 正在使用它自己的休眠 jar 版本,但不是战争中打包的那些....我如何让 Jboss 使用来自战争而不是来自其 common/lib 的休眠 jar

我更喜欢在相关应用程序中进行更改,但不是在 Jboss 中,因为有几个其他应用程序存在于同一个 Jboss 实例中,我不想通过修改 jboss/common/lib 中的 jar 来搞砸它们

SEVERE [ContainerResponse] The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
java.lang.NoSuchFieldError: INSTANCE
    at org.hibernate.type.StandardBasicTypes.<clinit>(StandardBasicTypes.java:45)
4

2 回答 2

0

Java EE 类加载器是一个层次结构:

  1. 引导程序
  2. 应用服务器
  3. 应用

由于应用服务器类加载器首先找到它的 Hibernate JAR 版本,因此您的应用不走运。

您必须告诉 JBOSS 更喜欢应用程序类加载器 JAR。谷歌的配置这样做;我不记得了。

于 2013-05-28T18:44:16.327 回答
0

检查此链接.. http://huima.wordpress.com/2011/09/16/have-fun-with-jboss-classloader-or-how-i-figured-out-how-to-get-my-应用程序到工作在 jboss-5/

文章中还有其他链接详细解释了 JBoss 类加载,您也可以查看这些链接。我之前做过的方法是在战争的WEB-INF中添加jboss-classloading.xml,内容如下

<classloading xmlns="urn:jboss:classloading:1.0"
name="yourapp.war"
domain="IsolatedDomain"
import-all="false"
parent-first="false" >
</classloading>
于 2013-05-29T06:34:45.310 回答