persistence@glassfish.java.net

persistence.xml not picked up in webapp

From: Pierre Delisle <Pierre.Delisle_at_Sun.COM>
Date: Thu, 12 Jan 2006 21:26:38 -0800

I have been successful in running the persistence example at
https://glassfish.dev.java.net/javaee5/persistence/persistence-example.html
on Java SE using the no.weaving property (so I would not have to specify
-javaagent).

Now, I would like to run a very similar example (i.e. uses Persistence with
Java SE), but within a web application in a container that is not
Java EE 5 compliant (e.g. Tomcat 5.5.x).

I have persistence.xml located in WEB-INF/classes/META-INF of my webapp
that looks like this:

  <persistence xmlns="http://java.sun.com/xml/ns/persistence">
      <persistence-unit name="pu1">
          <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
          <class>crud.models.Product</class>
          <properties>
              <property name="jdbc.driver" value="org.gjt.mm.mysql.Driver"/>
              <property name="jdbc.connection.string" value="jdbc:mysql://localhost:3306/test?autoReconnect=true"/>
              <property name="jdbc.user" value=""/>
              <property name="jdbc.password" value=""/>
              <property name="toplink.logging.level" value="INFO"/>
              <property name="no.weaving" value="true"/>
          </properties>
      </persistence-unit>
  </persistence>


When I run the webapp under Tomcat 5.5.7, it fails when the
code tries to create the EntityManagerFactory:

  javax.persistence.PersistenceException: No Persistence provider for EntityManager named pu1
    javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:67)

Looks like the 'persistence.xml' descriptor is not being picked up.

So... Where exactly is the 'persistence.xml' file supposed to be located
in my webapp so it can be picked up by Java Persistence?

Thanks,

    -- Pierre