繁体   English   中英

org.hibernate.ejb.HibernatePersistence不能强制转换为javax.persistence.spi.PersistenceProvider

[英]org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.PersistenceProvider

我正在使用SPRING 3.0.4,JPA 2,Hibernate 3.5.5开发应用程序。

我正在尝试在链接http://www.javacodegeeks.com/2010/05/jboss-42x-spring-3-jpa-hibernate.html上给出的现有示例。

唯一的区别是我使用的是最新版本的库和JBOSS服务器。

以下是我的/ WEB-INF / lib目录文件的列表

ANTLR-2.7.6.jar

aopalliance.jar

c3p0-0.9.1.jar

公地集合-3.1.jar

共享记录-1.1.1.jar

dom4j的-1.6.1.jar

GWT-dev.jar

GWT-user.jar

hibernate.jar文件

冬眠-JPA-2.0-API-1.0.0.Final.jar

的hsqldb.jar

Javassist进行-3.9.0.GA.jar

JTA-1.1.jar

log4j的-1.2.16.jar

org.springframework.aop-3.0.4.RELEASE.jar

org.springframework.asm-3.0.4.RELEASE.jar

org.springframework.aspects-3.0.4.RELEASE.jar

org.springframework.beans-3.0.4.RELEASE.jar

org.springframework.context.support-3.0.4.RELEASE.jar

org.springframework.context-3.0.4.RELEASE.jar

org.springframework.core-3.0.4.RELEASE.jar

org.springframework.expression-3.0.4.RELEASE.jar

org.springframework.instrument.tomcat-3.0.4.RELEASE.jar

org.springframework.instrument-3.0.4.RELEASE.jar

org.springframework.jdbc-3.0.4.RELEASE.jar

org.springframework.jms-3.0.4.RELEASE.jar

org.springframework.orm-3.0.4.RELEASE.jar

org.springframework.oxm-3.0.4.RELEASE.jar

org.springframework.test-3.0.4.RELEASE.jar

org.springframework.transaction-3.0.4.RELEASE.jar

org.springframework.web.portlet-3.0.4.RELEASE.jar

org.springframework.web.servlet-3.0.4.RELEASE.jar

org.springframework.web.struts-3.0.4.RELEASE.jar

org.springframework.web-3.0.4.RELEASE.jar

SLF4J-API-1.5.8.jar

SLF4J-log4j12-1.6.1.jar

spring4gwt-0.0.1.jar

以下是我的/WEB-INF/web.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

<!-- Servlets -->

<servlet>
    <servlet-name>springGwtRemoteServiceServlet</servlet-name>
    <servlet-class>org.spring4gwt.server.SpringGwtRemoteServiceServlet
</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>springGwtRemoteServiceServlet</servlet-name>
    <url-pattern>/gwtspring/springGwtServices/*</url-pattern>
</servlet-mapping>

<!-- Default page to serve -->
<welcome-file-list>
    <welcome-file>GWTSpring.html</welcome-file>
</welcome-file-list>

以下是我的/WEB-INF/applicationContext.xml文件

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

<context:component-scan base-package="com.javacodegeeks.gwtspring" />

<task:annotation-driven executor="myExecutor" scheduler="myScheduler" />

<task:executor id="myExecutor" pool-size="5" />

<task:scheduler id="myScheduler" pool-size="10" />

<tx:annotation-driven />

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="MyPersistenceUnit" />
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

以下是我的/src/resources/META-INF/petsistence.xml文件

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">

<persistence-unit name="MyPersistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <non-jta-data-source>java:/gwtDS</non-jta-data-source>

    <properties>
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
        <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" />
        <property name="hibernate.connection.url" value="jdbc:hsqldb:mem:salvation" />
        <property name="hibernate.connection.username" value="sa" />
        <property name="hibernate.connection.password" value="" />

        <property name="hibernate.c3p0.min_size" value="5" />
        <property name="hibernate.c3p0.max_size" value="20" />
        <property name="hibernate.c3p0.timeout" value="300" />
        <property name="hibernate.c3p0.max_statements" value="50" />
        <property name="hibernate.c3p0.idle_test_period" value="3000" />

    </properties>

</persistence-unit>

现在,当我尝试使用JBOSS服务器编译它时,它会给我以下错误

11:34:17,828 INFO [ServerImpl] JBoss(Microcontainer)[5.1.0.GA(build:SVNTag = JBoss_5_1_0_GA date = 200905221053)] 19年代开始:985ms 11:34:28,437 INFO [PersistenceUnitDeployment]启动持久性单元persistence.unit :unitName =#MyPersistenceUnit 11:34:29,046 ERROR [AbstractKernelController]安装到Start时出错:name = persistence.unit:unitName =#MyPersistenceUnit state =创建java.lang.ClassCastException:org.hibernate.ejb.HibernatePersistence不能强制转换为javax orpers.jboss.jpa.deployment.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:300)中的.persistence.spi.PersistenceProvider at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39)在org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils)的java.lang.reflect.Method.invoke(Method.java:597)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) .java:59)在org.jbos org.jboss.kernel.plugins.dependency.KernelControllerContextAction $中的org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)中的s.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150) org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)中的joinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)位于org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java: 109)位于org.jboss.kernel的org.jboss.kernel.plugins.dependency.KernelControllerAtext.dispatchJoinPoint(KernelControllerContextAction.java:70)org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221) .glugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)位于org.jboss.depe的org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42) 在org.jboss.dependency.plugins.AbstractControllerContextActions.install的org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)中的ndency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)在Org.jboss.dependency org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)的org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)中的AbstractControllerContextActions.java:51) .plugins.AbstractController.incrementState(AbstractController.java:934)org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984) )org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)at atg org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:121)位于org.jboss的org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:51)。在org.jboss.deployers.plugins的org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)中的deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)。 deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)位于org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl。 java:1157)org.jboss上的org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098) .dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)at或 g.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)org.jboss.dependency.plugins.AbstractController.resolveContexts( AbstractController.java:1082)org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)atg.jboss.dependency .glugins.AbstractController.change(AbstractController.java:553)org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl) .java:702)org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:362) )org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java: 255)at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:441)at java.util.concurrent.FutureTask $ Sync.innerRunAndReset(FutureTask.java:317)at java.util.concurrent.FutureTask.runAndReset (FutureTask.java:150)java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 101(ScheduledThreadPoolExecutor.java:98)java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)at java.util .concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java) :908)在java.lang.Thread.run(Thread.java:619)

这里的任何人都可以帮我解决问题。

如果您需要我的任何其他信息,请告诉我。

谢谢。

我个人从未成功使用JPA 2.0和JBoss 5.1.x (由于与JPA 1.0的集成太紧),尽管JBoss 4.2似乎可行。

我的建议是使用JBoss 6.0 M4(在撰写本文时)并从webapp中删除所有与hibernate相关的JAR:

  • ANTLR-2.7.6.jar
  • 公地集合-3.1.jar
  • dom4j的-1.6.1.jar
  • hibernate.jar文件
  • 冬眠-JPA-2.0-API-1.0.0.Final.jar
  • Javassist进行-3.9.0.GA.jar
  • JTA-1.1.jar

或者只是简单地使用Tomcat(并按原样部署您的webapp),因为您没有使用JBoss中的任何内容。

也可以看看

我想你不需要/WEB-INF/lib hibernate-jpa-2.0-api-1.0.0.Final.jar ,因为JBoss有自己的一组JPA类。

因此,您有两组由不同类加载器加载的JPA类,并且这些类不能相互转换。

我已为此特定问题创建了一种解决方法。 在这里查看: 如何在JBoss 5.x上使用JPA2? (或如何消除类加载隔离问题?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM