【问题标题】:Problems with persistence jars持久性罐子的问题
【发布时间】:2010-07-22 09:42:08
【问题描述】:

我在 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>

但我不走运。我仍然得到错误。有人可以帮我解决这个任务吗?

阿加塔

【问题讨论】:

  • 您要部署到哪个版本的 JBoss?

标签: java hibernate jboss


【解决方案1】:

您似乎想在您的应用程序中打包您自己的 Hibernate 版本。这是可能的,但您必须为您的应用程序设置类加载器范围。来自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 中的一个。

另见

【讨论】:

  • 您好,非常感谢您的回复。我通过在构建战争时从我的 pom.xml 中排除所有休眠 jar 和持久性来解决我的问题,它工作得很好。但再次感谢您的时间和帮助!
猜你喜欢
  • 1970-01-01
  • 2011-01-16
  • 1970-01-01
  • 2011-08-11
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
相关资源
最近更新 更多