No persistence provider for EntityManager when using a shared Hibernate 3 module
glsilver Apr 6, 2012 12:16 PMI'm trying to migrate my web application from Jboss AS 5 to AS 7.1.1. The application includes a separately deployed DAO jar with the database entities and a persistence.xml file and depends on Hibernate 3 libraries. I created a hibernate 3 module per the AS 7.1.1 documentation on using a shared Hibernate 3.5 or greater persistence provider, but when I run my web application, I get the following error:
08:51:01,220 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/WebPortal].[action]] (http--127.0.0.1-8080-2) Servlet.service() for servlet action threw exception: javax.persistence.
PersistenceException: No Persistence provider for EntityManager named AccountManagement
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69) [hibernate-jpa-2.0-api-1.0.1.Final.jar:1.0.1.Final]
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) [hibernate-jpa-2.0-api-1.0.1.Final.jar:1.0.1.Final]
at com.dsi.objectmodel.persistence.PersistenceUnitBase.<clinit>(PersistenceUnitBase.java:37) [edispense.objectModel.core.jar:]
at com.dsi.evaccine.web.portal.struts.ShowLoginAction.getCopyright(ShowLoginAction.java:110) [classes:]
at com.dsi.evaccine.web.portal.struts.ShowLoginAction.execute(ShowLoginAction.java:97) [classes:]
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) [struts-1.2.9.jar:1.2.9]
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) [struts-1.2.9.jar:1.2.9]
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) [struts-1.2.9.jar:1.2.9]
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) [struts-1.2.9.jar:1.2.9]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_26]
My Hibernate 3 module.xml is as follows:
<module xmlns="urn:jboss:module:1.0" name="org.hibernate" slot="3">
<resources>
<resource-root path="hibernate-core-3.6.6.Final.jar"/>
<resource-root path="hibernate-commons-annotations-3.2.0.Final.jar"/>
<resource-root path="hibernate-entitymanager-3.6.6.Final.jar"/>
<resource-root path="javassist-3.12.0.GA.jar"/>
<resource-root path="antlr-2.7.6.jar"/>
<resource-root path="commons-collections-3.2.1.jar"/>
<resource-root path="dom4j-1.6.1.jar"/>
<!-- Insert other Hibernate 3 jars to be used here -->
</resources>
<dependencies>
<module name="org.jboss.as.jpa.hibernate" slot="3"/>
<module name="asm.asm"/>
<module name="javax.api"/>
<module name="javax.persistence.api"/>
<module name="javax.transaction.api"/>
<module name="javax.validation.api"/>
<!--<module name="org.infinispan"/>-->
<module name="org.javassist"/>
<module name="org.slf4j"/>
</dependencies>
</module>
And here is the relevent portion of my persistence.xml:
<persistence xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="AccountManagement" transaction-type="RESOURCE_LOCAL">
<!-- UNCOMMENT THE NEXT LINE WHEN RUNNING IN JBOSS -->
<non-jta-data-source>java:/DsiDS</non-jta-data-source>
<!-- PERSISTENT CLASSES -->
<properties>
<property name="jboss.as.jpa.providerModule" value="org.hibernate:3" />
<property name="jboss.as.jpa.managed" value="false" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
Finally, here is my datasource configuration in standalone.xml:
<datasource jndi-name="java:/DsiDS" pool-name="DsiDS_Pool" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://dsidev:5432/qa</connection-url>
<driver>postgresql</driver>
<security>
<user-name>....</user-name>
<password>...</password>
</security>
</datasource>
My web application (war file) and dependent jars deploy without error. Can anyone tell me what I'm doing wrong?