gpt4 book ai didi

java.lang.ClassCastException : org. hibernate.ejb.HibernatePersistence 无法转换为 WebLogic 中的 javax.persistence.spi.PersistenceProvider

转载 作者:行者123 更新时间:2023-11-30 03:51:57 32 4
gpt4 key购买 nike

当我尝试使用 Jenkins 将 WAR 文件部署到 WebLogic (12) 服务器时,出现标题中的异常。当我将相同的 WAR 文件部署到本地主机 WebLogic (10.3.6) 时,一切正常。我正在 NetBeans 7.4 中进行开发,其中包含 Hibernate 3.6.10,并且我的本地 WebLogic 已更新为可以使用 JPA 2.0。

我已尝试了在网上看到的所有方法,但无法解决此错误。我的 persistence.xml 定义了持久性提供程序(Hibernate),仅此而已。我的 weblogic.xml 具有使用应用程序 JARS antlr.*、org.hibernate.* 和 javax.persistence.* 的标签(我是凭内存写的,所以请耐心等待)。如果我删除 javax.persistence.* 我会收到 java.lang.NoSuchFieldError: INSTANCE 异常。

我读到的所有内容都指向两个不同版本的持久性,这导致了问题。我想如果我告诉 weblogic 使用复制到 WAR 文件 (/lib) 中的所有内容,它就会使用它。我无法提供有关 Web 服务器的任何信息,因为我只知道它使用 WebLogic 12。

哦,另一件事,我没有使用 Spring(这是我读过的很多帖子所涉及的内容)。我使用 Hibernate 来实现 Oracle DB 的持久性,Web 服务器是 WebLogic 12。

有什么想法或想法吗?

谢谢。

最佳答案

Weblogic 10.3.x,符合 JPA 1.0。要在 weblogic 10.3.x 上运行 JPA 2.0 应用程序,您必须将 persistence.xml 重命名为其他名称(例如 xyz.xml),并在 Spring 配置文件中对其进行配置,如下所示:

 <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
<property value="classpath:META-INF/xyz.xml" name="persistenceXmlLocation"/>
<property name="persistenceUnitName" value="persistenceUnit"/>
<property name="dataSource" ref="dataSource"/>
</bean>

根据应用程序中的 bean 重命名 persistenceUnit 和 dataSource。

并在 weblogic.xml 文件中定义包排除项,如下所示:

<?xml version="1.0" encoding="UTF-8"?><wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.1/weblogic-web-app.xsd">
<wls:weblogic-version>10.3.3</wls:weblogic-version>
<wls:container-descriptor>
<wls:index-directory-enabled>false</wls:index-directory-enabled>
<package-name>javax.persistence.spi.*</package-name>
<wls:prefer-application-packages>
<wls:package-name>antlr.*</wls:package-name>
<wls:package-name>org.apache.commons.*</wls:package-name>
<wls:package-name>org.apache.xmlbeans.*</wls:package-name>
<wls:package-name>org.springframework.*</wls:package-name>
<wls:package-name>org.hibernate.*</wls:package-name>
<wls:package-name>org.hibernate.validator.*</wls:package-name>
<wls:package-name>javax.persistence.*</wls:package-name>
<wls:package-name>org.joda.*</wls:package-name></wls:prefer-application-packages></wls:container-descriptor></wls:weblogic-web-app>

关于java.lang.ClassCastException : org. hibernate.ejb.HibernatePersistence 无法转换为 WebLogic 中的 javax.persistence.spi.PersistenceProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24215828/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com