persistence@glassfish.java.net

Re: Can't find persistence.xml from web browser

From: Lance J. Andersen <Lance.Andersen_at_Sun.COM>
Date: Tue, 26 Sep 2006 17:13:25 -0400

what does your applet configuration look like in your html? that could
be the culprit

David Van Couvering wrote:
> Thanks, Mitesh. I am subscribed now. It bounced me the first time I
> sent an email, but it looks like the request went through. I sent it
> a second time once I was subscribed, and I saw my question but that
> was all. Thanks *very* much for forwarding these responses.
>
> I definitely have a provider listed as you specified, and also I must
> have toplink-essentials.jar in my classpath; otherwise how would the
> javax.persistence.Persistence class even be able to run so as to throw
> the exception below, as this class is also in the toplink-essentials
> jar file?
>
> Note that this file is accepted by the Glassfish persistence library
> when running in a unit test. I get a different error saying "no
> suitable driver" when it tries to get a connection, but that's a
> separate problem; it seems to be making it a lot farther in the unit
> test environment.
>
> So, I can only deduce it's not the format of the persistence.xml, and
> it's not the toplink-essentials.jar not being in the classpath. So,
> what else can cause the exception?
>
> I'm including my persistence.xml file below, if that helps. Note I
> use both types of properties, one with the toplink- prefix and one
> without, because I am getting inconsistent information on the mailing
> list and various tutorials/blogs about what the format should be. You
> might want to do a Google scan and fix all the tutorials out there
> that use the old format for persistence.xml.
>
> Thanks,
>
> David
>
> Mitesh Meswani wrote:
>> Hi David,
>>
>> Are you subscribed to persistence alias? Did you get these mails?
>>
>> Thanks,
>> Mitesh
>>
>> Tom Ware wrote:
>>
>>> Hi David,
>>>
>>> 'Just to add to what Mitesh has said.
>>> The javax.persistence.Persistence class is trying to find potential
>>> providers where you see your error. Essentially all it does is look
>>> for a resource on the classpath called:
>>> "META-INF/services/javax.persistence.spi.PersistenceProvider".
>>>
>>> The toplink-essentials.jar contains that resource.
>>>
>>> -Tom
>>>
>>> Mitesh Meswani wrote:
>>>
>>>> Hi David,
>>>>
>>>> As the exception indicates Persistence is not able to find a
>>>> provider for persistence unit. Please make sure that
>>>> 1. Your persistence.xml lists a provider
>>>> <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
>>>>
>>>> 2. toplink-essentials.jar is available at runtime.
>>>>
>>>> Thanks,
>>>> Mitesh
>>>>
>>>> David Van Couvering wrote:
>>>>
>>>>
>>>>> Hi, all. I am trying to run Java Persistence from within an
>>>>> applet -- yes, from within an applet.
>>>>>
>>>>> This is kind of urgent. If I can't get this to work, I'm going to
>>>>> have to revert to JDBC.
>>>>>
>>>>> The applet is loading derbycal.jar, which contains three Entity
>>>>> classes and META-INF/persistence.xml.
>>>>>
>>>>> When I run unit tests against derbycal standalone, Glassfish JPA
>>>>> is able to find persistence.xml and runs fine (except that it
>>>>> keeps complaining it can't find a suitable driver, but I can work
>>>>> on that).
>>>>>
>>>>> When I run the applet, however, it says
>>>>>
>>>>> javax.persistence.PersistenceException: No Persistence provider
>>>>> for EntityManager named derbycal
>>>>> at
>>>>> javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89)
>>>>>
>>>>> at
>>>>> javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
>>>>>
>>>>> at
>>>>> org.apache.derbyDemo.derbyCalendar.RequestManager$1.run(RequestManager.java:41)
>>>>>
>>>>> at java.security.AccessController.doPrivileged(Native Method)
>>>>> at
>>>>> org.apache.derbyDemo.derbyCalendar.RequestManager.<init>(RequestManager.java:38)
>>>>>
>>>>> at
>>>>> org.apache.derbyDemo.derbyCalendar.DerbyCalendarApplet.login(DerbyCalendarApplet.java:97)
>>>>>
>>>>>
>>>>>
>>>>> In scanning this mailing list, it appears this is a classloading
>>>>> problem.
>>>>>
>>>>> Does anyone know why the loader can't find
>>>>> META-INF/persistence.xml in derbycal.jar when it's loaded within
>>>>> an applet? How would I tell the applet classloader to look
>>>>> somewhere else? I tried putting it directly into the codebase
>>>>> directory for the applet but that didn't work either.
>>>>>
>>>>> Many thanks,
>>>>>
>>>>> David
>>>>>
>>>
>>>
> ------------------------------------------------------------------------
>
> <?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">
> <persistence-unit name="derbycal">
> <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
> <class>org.apache.derbyDemo.derbyCalendar.DerbyCalEvent</class>
> <class>org.apache.derbyDemo.derbyCalendar.AddEventRequest</class>
> <class>org.apache.derbyDemo.derbyCalendar.GCalendarRequest</class>
> <properties>
> <!-- JDBC connection properties -->
> <property name="toplink.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
> <property name="jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
> <property name="toplink.jdbc.connection.string" value="jdbc:derby:DerbyCalDb;create=true"/>
> <property name="jdbc.connection.string" value="jdbc:derby:DerbyCalDb;create=true"/>
> <property name="toplink.jdbc.user" value="davidvc"/>
> <property name="jdbc.user" value="davidvc"/>
> <property name="toplink.jdbc.password" value="secret"/>
> <property name="jdbc.password" value="secret"/>
> <!-- SQL dialect to use -->
> <property name="toplink.platform.class.name" value="oracle.toplink.essentials.platform.database.DerbyPlatform"/>
> <property name="toplink.logging.level" value="INFO"/>
> <property name="toplink.ddl-generation" value="drop-and-create-tables"/>
> <property name="toplink.ddl-generation.output-mode" value="database"/>
> <property name="toplink.no-weaving" value="true"/>
> <property name="no-weaving" value="true"/>
> </properties>
> </persistence-unit>
> </persistence>
>