javax.persistence.PersistenceException

Hallo zusammen,

ich habe eine Google App Engine Anwendung und bekomme aktuell folgenden Fehler:
javax.persistence.PersistenceException: No Persistence provider for EntityManager named transactions-optional
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at de.server.dao.EMFService.(EMFService.java:9)
at de.server.dao.GenericDaoImpl.(GenericDaoImpl.java:16)
at de.server.dao.ProfilProvider.(ProfilProvider.java:5)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

Die Persistence.xml sieht folgendermaßen aus:

<?xml version="1.0" encoding="UTF-8" ?> org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider

Das Projekt ist mit Maven aufgesetzt und hat folgende Struktur:
|_ src/main/webapp |_ WEB-INF |_ mvc-dispather-servlet.xml, spring-security.xml, etc…
|_ src/main/resources
|_ META-INF |_ persistence.xml

pom.xml:


<build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <version>2.5.1</version>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>com.google.appengine</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>${appengine.target.version}</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
            </plugin>
        </plugins>
    </build>

Ich bin für jeden Hinweis dankbar.

gruß

Hier nochmal alles formatiert :slight_smile:


javax.persistence.PersistenceException: No Persistence provider for EntityManager named transactions-optional
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    at de.server.dao.EMFService.<clinit>(EMFService.java:9)
    at de.server.dao.GenericDaoImpl.<init>(GenericDaoImpl.java:16)
    at de.server.dao.ProfilProvider.<init>(ProfilProvider.java:5)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)


<?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="transactions-optional">
        <provider>org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider</provider>
        <properties>
            <property name="datanucleus.NontransactionalRead" value="true"/>
            <property name="datanucleus.NontransactionalWrite" value="true"/>
            <property name="datanucleus.ConnectionURL" value="appengine"/>
        </properties>
    </persistence-unit>
    
</persistence>


|_ src/main/webapp
    |_ WEB-INF
        |_ mvc-dispather-servlet.xml, spring-security.xml, etc..
|_ src/main/resources
    |_ META-INF
        |_ persistence.xml

Häufig liegt so etwas an dem ausgewählten Provider. Ich kenne mich mit GAE nicht wirklich aus. Gegen welche Datenbank läufst Du?

edit: org.datanucleus.api.jpa.PersistenceProviderImpl schon probiert?

Hmm?!? Gab es die exakt gleiche Frage nicht gestern schon mal? Die persistence.xml liegt an der falschen Stelle. Unter folgendem Link ist sehr gut erklärt, wo sie bei Webapps hin gehört: http://javahowto.blogspot.de/2007/06/where-to-put-persistencexml-in-web-app.html

Ah, ja, das könnte es auch sein.

die persistence.xml liegt an der richtigen stelle. zudem möchte in den google app engine datastore verwenden. ich habe folgenden artikel als grundlage verwendet: http://www.vogella.com/articles/GoogleAppEngineJava/

gruß