Problem with Web Application Deployment in JBoss EAP 5.1
jboss.golden.peru Apr 13, 2012 11:53 PMGood night people in the community. I explain my problem, I have a web application made with JPA2.0 using EclipseLink2.0 (with jars: EclipseLink and javaxpersistence), when generating the war and raise it in an apache-tomcat my application works without problems, but when deploying the same war in jboss 5.1 EAP I get the following error:
2012-03-25 17:35:25,288 INFO [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (main) deploy, ctxPath=/
2012-03-25 17:35:25,410 INFO [org.jboss.jpa.deployment.PersistenceUnitDeployment] (main) Starting persistence unit persistence.unit:unitName=Ventas.war#Ventas
2012-03-25 17:35:25,487 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (main) Error installing to Start: name=persistence.unit:unitName=Ventas.war#Ventas state=Create
java.lang.RuntimeException: Specification violation [EJB3 JPA 6.2.1.2] - You have not defined a non-jta-data-source for a RESOURCE_LOCAL enabled persistence context named: Ventas
My persistence.xml is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<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_1_0.xsd"
version="1.0">
<persistence-unit name="Ventas" transaction-type="RESOURCE_LOCAL">
<class>modelo.Cliente</class>
<class>modelo.Detallefactura</class>
<class>modelo.Factura</class>
<class>modelo.Producto</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/ventasdb"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.password" value="root"/>
</properties>
</persistence-unit>
</persistence>
Looking found that I must define my datasource for my connection to my database: MySQL5.0, in addition to change my persistence.xml to include a JTA. Copy to the folder: default / deploy-ds.xml file Sales is my datasource (configured with my database mysql5.0) whose JNDI VentasDatasource
<?xml version="1.0" encoding="UTF-8"?>
<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_1_0.xsd"
version="1.0">
<persistence-unit name="Ventas" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:/VentasDatasource</jta-data-source>
<class>modelo.Cliente</class>
<class>modelo.Detallefactura</class>
<class>modelo.Factura</class>
<class>modelo.Producto</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/ventasdb"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.password" value="root"/>
</properties>
</persistence-unit>
</persistence>
However, I generated the following error in the JBoss EAP5.1
2012-03-25 23:18:11,505 INFO [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) undeploy, ctxPath=/Ventas
2012-03-25 23:18:29,918 INFO [org.jboss.jpa.deployment.PersistenceUnitDeployment] (HDScanner) Starting persistence unit persistence.unit:unitName=Ventas.war#Ventas
2012-03-25 23:18:29,934 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (HDScanner) Error installing to Start: name=persistence.unit:unitName=Ventas.war#Ventas state=Create
java.lang.ClassCastException: org.eclipse.persistence.jpa.PersistenceProvider cannot be cast to javax.persistence.spi.PersistenceProvider
Thanks for your response