Classpath für JPA in Tomcat Webapp: Wie konfigurieren?

mdolphin

Mitglied
Ich schreibe eine kleine Anwendung, welche später Objekte, die ich mittels JSON Webservice erhalte, in eine Datenbank speichern soll. Ich habe also zunächst die ganzen zu persistierenden Klassen erzeugt und einige JUnit Tests geschrieben, um solche Objekte mittel JPA (Eclipselink 2.3.0) in die Datenbank zu schreiben, zu lesen und zu löschen. Das klappt alles ganz hervorragend.

Außerdem habe ich mir im selben Eclipse Projekt einige JAX-RS Webservices mit Jersey erstellt, welche JSON Objekte empfangen und in einer Datenstruktur speichern können.

Sobald ich aber versuche direkt in meinen Webressourcen (also den Klassen welche auf REST Anfragen antworten) JPA zu verwenden, wirft mir der Tomcat direkt beim Start schon eine Exeption:

SCHWERWIEGEND: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: Ljavax/persistence/EntityManagerFactory;

Scheinbar hat meine Web-Applikation, im Gegensatz zu den JUnit Tests und Datenklassen, gar keinen Zugriff auf die JPA Klassen.

In Eclipse ist unter "Java Build Path" meine User Library "EclipseLink 2.3.0 - Indigo" zu sehen. Im Abschnitt "Web App Libraries" jedoch nicht.

spJhES


Wieso funktioniert JPA "lokal", also in den JUnit Tests, nicht aber in der Webapp?

Danke im Voraus

Michael
 
Alles was eine WebApp zur Laufzeit braucht muss entweder uner WEB-INF/lib liegen oder vom Servetcotainer zur Verfügung gestellt werden.

Zur Laufzeit gibt es dein Eclipseprojekt und die userlibraires nicht mehr 😉

Kannst entweder beim Order/Export einstellen was beim packen der War mit rein kommt, oder gleich unter WEB-INF/lib legen.

Unittests werden nicht im ServletContainer ausgeführt, das wären Integrationstests.
 

Neue Themen


Zurück
Oben