Step to reproduce the problem:
1) creare a simple web app
2) add hibernate jars
3) add persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
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_1_0.xsd">
<persistence-unit name="HibernateTomeePU"
transaction-type="RESOURCE_LOCAL">
*<provider>org.hibernate.ejb.HibernatePersistence</provider>*
<class>beans.User</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
* <jta-data-source>MyAppDB</jta-data-source>*
</persistence-unit>
</persistence>
4) add jdbc driver (ex mysql connector.....) to tomee/lib
5) create datasource MyAppDB in tomee.xml
<Resource id="MyAppDB" type="DataSource">
JdbcDriver com.mysql.jdbc.Driver
JdbcUrl jdbc:mysql://localhost:3306/myapp
UserName xxx
Password xxx
</Resource>
6) create simple @Stateless bean with uses
@PersistenceContext(unitName="HibernateTomeePU") EntityManager em;
this is the error...
Grave: Unable to deploy collapsed ear in war /HibernateTomee: Exception:
Creating application failed: C:\work\HibernateTomee\build\web:
java.util.concurrent.ExecutionException: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider
org.apache.openejb.OpenEJBException: Creating application failed:
C:\work\HibernateTomee\build\web:
java.util.concurrent.ExecutionException:*java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider*:
java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence
cannot be cast to javax.persistence.spi.PersistenceProvider
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:909)
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:506)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:634)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:588)
at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:117)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:530)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1471)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:791)
at
org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1436)
at
org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:856)
at
org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:353)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.openejb.OpenEJBException:
java.util.concurrent.ExecutionException: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:635)
... 46 more
Caused by: java.util.concurrent.ExecutionException:
java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence
cannot be cast to javax.persistence.spi.PersistenceProvider
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:262)
at java.util.concurrent.FutureTask.get(FutureTask.java:119)
at
org.apache.openejb.assembler.classic.PersistenceBuilder.createEmf(PersistenceBuilder.java:169)
at
org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:150)
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:629)
... 46 more
Caused by: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider
at
org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:40)
at
org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:27)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
... 3 more
giu 30, 2012 8:28:44 PM org.apache.catalina.core.ContainerBase
addChildInternal
Grave: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component
[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/HibernateTomee]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:530)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1471)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:791)
at
org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1436)
at
org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:856)
at
org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:353)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.tomee.catalina.TomEERuntimeException:
org.apache.openejb.OpenEJBException: Creating application failed:
C:\work\HibernateTomee\build\web:
java.util.concurrent.ExecutionException: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider
at
org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:641)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:588)
at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:117)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 38 more
Caused by: org.apache.openejb.OpenEJBException: Creating application
failed: C:\work\HibernateTomee\build\web:
java.util.concurrent.ExecutionException: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:909)
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:506)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:634)
... 44 more
Caused by: org.apache.openejb.OpenEJBException:
java.util.concurrent.ExecutionException: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:635)
... 46 more
Caused by: java.util.concurrent.ExecutionException:
java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence
cannot be cast to javax.persistence.spi.PersistenceProvider
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:262)
at java.util.concurrent.FutureTask.get(FutureTask.java:119)
at
org.apache.openejb.assembler.classic.PersistenceBuilder.createEmf(PersistenceBuilder.java:169)
at
org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:150)
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:629)
... 46 more
Caused by: java.lang.ClassCastException:
org.hibernate.ejb.HibernatePersistence cannot be cast to
javax.persistence.spi.PersistenceProvider
at
org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:40)
at
org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:27)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
... 3 more
giu 30, 2012 8:28:45 PM org.apache.catalina.startup.HostConfig
deployDescriptor
Grave: Error deploying configuration descriptor
C:\work\apache-tomee-1.0.0-plus-raw\conf\Catalina\localhost\HibernateTomee.xml
java.lang.IllegalStateException: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component
[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/HibernateTomee]]
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:898)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:530)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1471)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:791)
at
org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1436)
at
org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:856)
at
org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:353)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Il 30/06/2012 19:28, Romain Manni-Bucau ha scritto:
Hi,
I often embedded hibernate in my webapps, what was your issues?
- Romain
Le 30 juin 2012 17:00, "Enrico Olivelli" <[email protected]> a écrit :
Hi all,
I recently ported my webapp from Glassfish to TomEE plus. All works fine
after some change but I found these two problems.....
1) I had to copy Hibernate libs con tomee/lib and remove them from my
webapp (????
http://openejb.apache.org/**tomee-and-hibernate.html<http://openejb.apache.org/tomee-and-hibernate.html>
)
2) It seems that TomEE tries to bind every PersistenceUnit declared in
persistence.xml even if some of them is not used wich
@PersistenceContext....
Why don't you allow to embed JPA provider libs directly inside the webapp ?
* in GF3 it works
* my system administrator is not very happy about adding JARS to server
base directory, because he needs to keep JARs aligned with the good version
for my app
* it is actually not possibile to deploy more than one app with different
Hibernate versions in the same tomee (this is a problem because we are
going to more other apps)
thanks
Enrico
Il 29/06/2012 05:35, Zeeman ha scritto:
Clone URL (Committers only):
https://cms.apache.org/**redirect?new=anonymous;action=**
diff;uri=http://openejb.**apache.org/tomee-and-**hibernate.mdtext<https://cms.apache.org/redirect?new=anonymous;action=diff;uri=http://openejb.apache.org/tomee-and-hibernate.mdtext>
Zeeman
Index: /trunk/content/tomee-and-**hibernate.mdtext
==============================**==============================**=======
--- /trunk/content/tomee-and-**hibernate.mdtext (revision 1355197)
+++ /trunk/content/tomee-and-**hibernate.mdtext (working copy)
@@ -57,3 +57,30 @@
`CATALINA_OPTS=-Djavax.**persistence.provider=org.**hibernate.ejb.**
HibernatePersistence`
You **must** of course add the Hibernate libraries to
`<tomee-home>/lib/` for this to work.
+
+Jars needed for Hibernate 4.x: (below is for 4.1)
+<pre><code>
+
<lib>org.hibernate:hibernate-**entitymanager:${hibernate.**
core.version}</lib>
+
<lib>org.hibernate:hibernate-**core:${hibernate.core.version}**</lib>
+
<lib>org.jboss.logging:jboss-**logging:3.1.0.GA</lib>
+
<lib>antlr:antlr:2.7.7</lib>
+
<lib>dom4j:dom4j:1.6.1</lib>
+ <lib>org.hibernate.common:
**hibernate-commons-annotations:**4.0.1.Final</lib>
+
<lib>org.hibernate:hibernate-**validator:4.2.0.Final</lib>
+</code></pre>
+
+To use Infinispan cache (default Hibernate 2nd level cache) you need the
below jars:
+<pre><code>
+ <lib>org.infinispan:**
infinispan-core:5.1.4.FINAL</**lib>
+
<lib>org.hibernate:hibernate-**infinispan:${hibernate.core.**
version}</lib>
+
<lib>org.jgroups:jgroups:3.0.**9.Final</lib>
+
<lib>org.jboss.marshalling:**jboss-marshalling-river:1.3.**11.GA<http://1.3.11.GA>
:</lib>
+
<lib>org.jboss.marshalling:**jboss-marshalling:1.3.11.GA</**lib>
+
<lib>org.codehaus.woodstox:**woodstox-core-asl:4.1.1</lib>
+
<lib>org.codehaus.woodstox:**stax2-api:3.1.1</lib>
+ <lib>org.rhq.helpers:rhq-
**pluginAnnotations:3.0.4</lib>
+ <lib>org.jboss.logmanager:
**jboss-logmanager:1.2.2.GA</**lib>
+</code></pre>
+
+There is many guides on how to use 2nd level cache with JPA 2.
+You can remove OpenJPA jar so less jars are in Tomee/lib folder. Be sure
to put your DB driver in Tomee/lib.
\ No newline at end of file