持久性罐子的问题

时间:2010-07-22 09:42:09

标签: java hibernate jboss

我正在与JBOss挣扎,我遇到了一个似乎很难修复的问题,但事实证明我做不到。 当我尝试部署一个简单的Java Web应用程序时遇到异常:

org.hibernate.ejb.HibernatePersistence cannot be cast to avax.persistence.spi.PersistenceProvider

我知道这是一个有多个persistence.jar的问题。所以在我的pom中我做了类似的事情:

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.4.0.GA</version>
            <exclusions>
                <exclusion>
                    <groupId>org.hibernate</groupId>
                    <artifactId>ejb3-persistence</artifactId>
                </exclusion>
</dependency>

但我不幸的是。我仍然得到错误。有人能帮助我解决这个问题吗?

阿形

1 个答案:

答案 0 :(得分:0)

您希望在应用程序中打包自己的Hibernate版本。这是可能的,但您必须为您的应用程序设置classloader作用域。来自ClassLoadingConfiguration

  

使用覆盖服务器类进行隔离

     

使用以下结构   启用范围类加载   部署类重写   服务器类。

     

...

     

jboss-web.xml

<jboss-web>
   <class-loading java2ClassLoadingCompliance="false">
      <loader-repository>
         com.example:archive=unique-archive-name
         <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
      </loader-repository>
   </class-loading>
 ...

换句话说,要么包含所有Hibernate库,要么禁用父类加载器委托或将它们全部排除,并使用JBoss中的那个。

另见