Jboss hibernate jar冲突

时间:2013-05-28 18:39:58

标签: java hibernate jar jboss jboss5.x

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

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

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

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)

2 个答案:

答案 0 :(得分:0)

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

  1. 自举
  2. App server
  3. 应用
  4. 由于app server class loader首先找到了Hibernate JAR的版本,你的应用程序运气不佳。

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

答案 1 :(得分:0)

检查此链接.. http://huima.wordpress.com/2011/09/16/having-fun-with-jboss-classloader-or-how-i-figured-out-how-to-get-my-application-to-work-in-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>