org.hibernate.ejb.HibernatePersistence нельзя привести к 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

Commons-logging-1.1.1.jar

dom4j-1.6.1.jar

gwt-dev.jar

gwt-user.jar

hibernate3.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>

Following is my /WEB-INF/applicationContext.xml file

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

Following is my /src/resources/META-INF/petsistence.xml file

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

Now when I am trying to complile it using JBOSS server it gives me following error

Может ли кто-нибудь помочь мне решить проблему.

Пожалуйста, дайте мне знать, если вам что-нибудь понадобится от меня.

Спасибо.

Мне лично никогда не удавалось использовать JPA 2.0 с JBoss 5.1.x (из-за слишком тесной интеграции с JPA 1.0), хотя это кажется возможным с JBoss 4.2.


person amar4kintu    schedule 21.09.2010    source источник


Ответы (3)


Я предлагаю либо использовать JBoss 6.0 M4 (на момент написания этой статьи), либо удалить все JAR-файлы, связанные со спящим режимом, из веб-приложения:

Или просто использовать Tomcat (и развернуть свое веб-приложение как есть), поскольку вы ничего не используете из JBoss.

  • общие коллекции-3.1.jar
  • dom4j-1.6.1.jar
  • hibernate3.jar
  • спящий режим-jpa-2.0-api-1.0.0.Final.jar
  • javassist-3.9.0.GA.jar
  • jta-1.1.jar
  • JBoss 5.1.0.GA, JPA 2.0 и EClipseLink 2.0 (на который нет ответа)

Смотрите также

antlr-2.7.6.jar

person Pascal Thivent    schedule 21.09.2010
comment
Точно. У вашего JBoss есть собственная реализация JPA. - person amar4kintu; 23.09.2010

Итак, у вас есть два набора классов JPA, загруженных разными загрузчиками классов, и эти классы не могут быть переданы друг другу.

Я создал обходной путь для этой конкретной проблемы. Посмотрите здесь: Как использовать JPA2 на JBoss 5.x? (или как устранить проблему изоляции загрузки классов?)

person axtavt    schedule 21.09.2010
comment
Привет друзья! Спасибо за ответ, но если я удалю hibernate-jpa-2.0-api-1.0.0.Final.jar в / WEB-INF / lib, это даст мне следующую ошибку java.lang.ClassNotFoundException: javax.persistence.spi. ProviderUtil из BaseClassLoader @ 1b429 {VFSClassLoaderPolicy @ 1daf1cd {name = vfsfile: / E: /workspace/eclipse/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_5.1_Server/Deep / - person Sean Patrick Floyd; 21.09.2010
comment
@ amar4kintu: Посмотрите на ответ Паскаля Тивента, он более уместен. - person amar4kintu; 21.09.2010
comment
11: 34: 17,828 ИНФОРМАЦИЯ [ServerImpl] JBoss (Микроконтейнер) [5.1.0.GA (сборка: SVNTag = JBoss_5_1_0_GA date = 200905221053)] Дата начала 19с: 985 мс 11: 34: 28,437 ИНФОРМАЦИЯ [PersistenceUnitDeployment] Начальная единица сохранения состояния persistence.unit : unitName = # MyPersistenceUnit 11: 34: 29,046 ОШИБКА [AbstractKernelController] Ошибка при установке в Start: name = persistence.unit: unitName = # MyPersistenceUnit state = Create java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence не может быть преобразовано в javax .persistence.spi.PersistenceProvider в org.jboss.jpa.deployment.PersistenceUnitDeployment.start (PersistenceUnitDeployment.java:300) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.Impl.invoke0 (Native Method) at sun.reflect.Impl. 39) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) в org.jboss.reflect.plugins.introspection.Reflection .invoke (ReflectionUtils.java:59) в org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke (ReflectMethodInfoImpl.java:150) в org.jboss.joinpoint.plugins.BasicPoint.dishodJoin (BasicPointMethodJoin) или plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper (KernelControllerContextAction.java:109) в org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoin (KernelControllerContextAction.dispatchJoin (KernelControllerContextAction.dispatchJoin (KernelControllerContextAction ).dispatchJoin (KernelControllerContextAction). LifecycleAction.java:221) на org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction (InstallsAwareAction.java:54) на org.jboss.kernel.p lugins.dependency.InstallsAwareAction.installAction (InstallsAwareAction.java:42) по адресу org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction (SimpleControllerContextAction.java:62) в org.jbossContextAction.java:62) (на org.jboss. AccessControllerContextAction.java:71) в org.jboss.dependency.plugins.AbstractControllerContextActions.install (AbstractControllerContextActions.java:51) в org.jboss.dependency.plugins. AbstractControllerContext.install (AbstractControllerContext.java:348) в org.jboss.dependency.plugins.AbstractController.install (AbstractController.java:1631) в org.jboss.dependency.plugins.AbstractController.incrementState (Abstractg:934) в .jboss.dependency.plugins.AbstractController.resolveContexts (AbstractController.java:1082) в org.jboss.dependency.plugins.AbstractController.resolveContexts (AbstractController.java:984) в org.jboss.AndependencyController.plug .java: 774) по адресу org.jboss.dependency.plugins.AbstractController.install (AbstractController.java:540) по адресу org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy (BeanMetaDataDataDeployer.deploy (BeanMetaDatajava: org jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy (BeanMetaDataDeployer.java:51) в org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy (AbstractSimpleDeployer.internalDeploy ) на org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy (AbstractRealDeployer.java:50) на org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy (DeployerWrapper1) .java: или deployers.plugins.deployers.DeployersImpl.doDeploy (DeployersImpl.java:1439) по адресу org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst (DeployersImpl.java.Deployers. doInstallParentFirst (DeployersImpl.java:1178) в org.jboss.deployers.plugins.deployers.DeployersImpl.install (DeployersImpl.java:1098) в org.jboss.dependency.plugins.AbstractControllerContext.install8 (в AbstractControllerContext. .jboss.dependency.plugins.AbstractController.install (AbstractController.java:1631) в org.jboss.dependency.plugins.AbstractController.incrementState (AbstractController.java:934) в org.jboss.dependency. Abstractplugins.Aresbject ller.java:1082) в org.jboss.dependency.plugins.AbstractController.resolveContexts (AbstractController.java:984) в org.jboss.dependency.plugins.AbstractController.change (AbstractController.java:822) в org.jboss. .plugins.AbstractController.change (AbstractController.java:553) в org.jboss.deployers.plugins.deployers.DeployersImpl.process (DeployersImpl.java:781) в org.jboss.deployers.plugins.main.Impl.MainDeployer (MainDeployer .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.loyserver.profileservice.HD ( HDScanner.java:255) на java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:441) на java.util.concurrent.FutureTask $ Sync.innerRunAndReset (FutureTask.java:317) на java.concurtil.concurrent .FutureTask.runAndReset (FutureTask.java:150) в java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 101 (ScheduledThreadPoolExecutor.java:98) в java.util.concurrent.ScheduledThreadPoolPoolExecutor.java:98) в java.util.concurrent.ScheduledThreadPool в java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run (ScheduledThreadPoolExecutor.java:205) в java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.concurrent.java:88) rker.run (ThreadPoolExecutor.java:908) в java.lang.Thread.run (Thread.java:619) - person axtavt; 21.09.2010

Pascal, я попытался использовать JBOSS 6.0 M4, но он выдает ошибку. Причина: java.lang.LinkageError: нарушение ограничения загрузчика в инициализации интерфейса itable: при разрешении метода org.springframework.util.xml.XMLEventStreamReader.getName () Ljavax / xml / пространство имен / QName; загрузчик классов (экземпляр org / jboss / classloader / spi / base / BaseClassLoader) текущего класса, org / springframework / util / xml / XMLEventStreamReader, и загрузчик классов (экземпляр ‹bootloader›) для интерфейса javax / xml / stream / XMLStreamReader имеют разные объекты класса для типа javax / xml / namespace / QName, используемого в подписи

person Stephan    schedule 05.01.2012