1 Reply Latest reply on Apr 17, 2012 10:28 AM by sfcoy

    Problem with Web Application Deployment in JBoss EAP 5.1

    jboss.golden.peru

      Good 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

        • 1. Re: Problem with Web Application Deployment in JBoss EAP 5.1
          sfcoy

          I don't think you can deploy JPA 2.0 applications in JBoss 5.1 (EAP or otherwise). This version of JBoss contains an implementation of the JPA 1.0 spec, which is why you're getting the ClassCastException.

           

          You will have more luck attempting this in JBoss 7.1. It's my understanding that there will be an EAP release of this later in the year.