mschlegel
Erfahrenes Mitglied
Hallöle
Ich arbeite mich zur Zeit in JSF 2 und JPA 2 ein und habe hierzu eine kleine Webanwendung gestartet. Da ich bei der Persistenz die JPA packages nicht an die Geschäftslogik weitergeben will habe ich ein paar DAOs genommen. Nach einer Weile habe ich herausgefunden dass insbesondere die Transaktionshandhabung problematisch wird wenn ich mir den EntityManager nicht von einem Framework verwalten lasse (die Tests laufen über eine Embedded Derby Instanz im Speicher und da setze ich den EM manuell).
Deshalb habe ich das Project ein in ein AppServer EAR für Glassfish V3 umgewandelt. Spring wollte ich nicht nutzen weil erst Spring 3 wohl JSF2 und JPA2 Support bringt und ich jetzt nicht noch mehr mit Maven herumexperimentieren will.
Das Problem ist, dass beim deployen mein Projekt mit dem Domainmodel anscheinend nicht geladen wird obwohl es vorhanden ist..
Die Struktur schaut so aus
Auch wenns etwas viel is, aber ohne die POMs wird mir wohl keiner helfen können
(ich hab ein paar Teile gekürzt)
Das PARENT-POM
EAR-POM
Model-POM
EJB-POM
Presenter-POM
WebApp-POM
Ich kann jetzt alle Projekte bauen und es gibt kein Problem. Im ear Ordner lasse ich dann mvn ear:ear laufen und warte. Das EAR wollte ich dann in Glassfish manuell deployen um erst einmal zu sehen ob mit dem EJB-Kram (EntityManager) auch alles funktionier. DataSource und JNDI wurden vorher auch angelegt.
Beim deployen erhalte ich aber dann folgenden Fehler: Caused by: java.lang.ClassNotFoundException: de.eye4eye.itea.model.User
Also habe ich das ear untersucht, die jars und das war waren alle vorhanden aber im application.xml stand nur das
Ich habe mich gewundert warum die anderen zwei jar-module hier nicht aufgeführt waren und habe nach ein wenig googeln zur syntax noch das hier eingefügt
Das ganze dann wieder ins archiv gepackt und wieder versucht zu deployen, aber es kommt der selbe Fehler.
Wieso werden die Klassen nicht geladen, obwohl die Jars vorhanden sind? (zimlich viel Text für so eine kurze Frage
)
Ich hoffe einer der Spezialisten hier kann mir weiterhelfen
Ich arbeite mich zur Zeit in JSF 2 und JPA 2 ein und habe hierzu eine kleine Webanwendung gestartet. Da ich bei der Persistenz die JPA packages nicht an die Geschäftslogik weitergeben will habe ich ein paar DAOs genommen. Nach einer Weile habe ich herausgefunden dass insbesondere die Transaktionshandhabung problematisch wird wenn ich mir den EntityManager nicht von einem Framework verwalten lasse (die Tests laufen über eine Embedded Derby Instanz im Speicher und da setze ich den EM manuell).
Deshalb habe ich das Project ein in ein AppServer EAR für Glassfish V3 umgewandelt. Spring wollte ich nicht nutzen weil erst Spring 3 wohl JSF2 und JPA2 Support bringt und ich jetzt nicht noch mehr mit Maven herumexperimentieren will.
Das Problem ist, dass beim deployen mein Projekt mit dem Domainmodel anscheinend nicht geladen wird obwohl es vorhanden ist..
Die Struktur schaut so aus
- itea-application (das EAR Projekt)
- itea-model (Nur das Domain-Model) --> genau das wird zum Schluss nicht gefunden
- itea-persist-ejb
- itea-presenter (Passive-View Pattern, kümmert sich um die Geschäftslogik)
- itea-webapp (JSF 2 kram)
Auch wenns etwas viel is, aber ohne die POMs wird mir wohl keiner helfen können

Das PARENT-POM
XML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.eye4eye</groupId>
<artifactId>itea-parent</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>Itea</name>
<modules>
<module>../itea-application</module>
<module>../itea-model</module>
<module>../itea-persist-ejb</module>
<module>../itea-presenter</module>
<module>../itea-webapp</module>
</modules>
...
</project>
EAR-POM
XML:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>de.eye4eye</groupId>
<artifactId>itea-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>de.eye4eye</groupId>
<artifactId>itea-application</artifactId>
<packaging>ear</packaging>
<name>ITEA Enterprise-Archive</name>
<version>1.0.0-SNAPSHOT</version>
<description />
<dependencies>
<dependency>
<groupId>de.eye4eye</groupId>
<artifactId>itea-persist-ejb</artifactId>
<type>ejb</type>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>de.eye4eye</groupId>
<artifactId>itea-webapp</artifactId>
<type>war</type>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>de.eye4eye</groupId>
<artifactId>itea-model</artifactId>
<type>jar</type>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>de.eye4eye</groupId>
<artifactId>itea-presenter</artifactId>
<type>jar</type>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<finalName>itea-application</finalName>
<plugins>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<defaultJavaBundleDir>APP-INF/lib</defaultJavaBundleDir>
<modules>
<javaModule>
<groupId>de.eye4eye</groupId>
<artifactId>itea-model</artifactId>
<bundleDir>/</bundleDir>
</javaModule>
<javaModule>
<groupId>de.eye4eye</groupId>
<artifactId>itea-presenter</artifactId>
<bundleDir>/</bundleDir>
</javaModule>
<ejbModule>
<groupId>de.eye4eye</groupId>
<artifactId>itea-persist-ejb</artifactId>
</ejbModule>
<webModule>
<groupId>de.eye4eye</groupId>
<artifactId>itea-webapp</artifactId>
</webModule>
</modules>
</configuration>
</plugin>
...
Model-POM
XML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.eye4eye</groupId>
<artifactId>itea-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../itea-parent/pom.xml</relativePath>
</parent>
<groupId>de.eye4eye</groupId>
<artifactId>itea-model</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Itea Model</name>
<repositories>
<repository>
<id>java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2/</url>
</repository>
<repository>
<id>maven2-repository.jboss.com</id>
<name>JBoss Repository for Maven</name>
<url>http://repository.jboss.com/maven2/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
EJB-POM
XML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.eye4eye</groupId>
<artifactId>itea-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../itea-parent/pom.xml</relativePath>
</parent>
<artifactId>itea-persist-ejb</artifactId>
<packaging>ejb</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>Itea Persistence API</name>
...
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>itea-model</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<configuration>
<ejbVersion>3.0</ejbVersion>
</configuration>
</plugin>
</plugins>
</build>
</project>
Presenter-POM
XML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.eye4eye</groupId>
<artifactId>itea-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../itea-parent/pom.xml</relativePath>
</parent>
<groupId>de.eye4eye</groupId>
<artifactId>itea-presenter</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Itea Presenter</name>
<repositories>
<repository>
<id>java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2/</url>
</repository>
<repository>
<id>maven2-repository.jboss.com</id>
<name>JBoss Repository for Maven</name>
<url>http://repository.jboss.com/maven2/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>itea-model</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>itea-persist-ejb</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
WebApp-POM
XML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.eye4eye</groupId>
<artifactId>itea-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../itea-parent/pom.xml</relativePath>
</parent>
<groupId>de.eye4eye</groupId>
<artifactId>itea-webapp</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>ITEA WebApplication</name>
...
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>itea-model</artifactId>
<version>${project.version}</version>
<type>jar</type>
<optional>false</optional>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>itea-presenter</artifactId>
<version>${project.version}</version>
<type>jar</type>
<optional>false</optional>
</dependency>
...
...
</project>
Ich kann jetzt alle Projekte bauen und es gibt kein Problem. Im ear Ordner lasse ich dann mvn ear:ear laufen und warte. Das EAR wollte ich dann in Glassfish manuell deployen um erst einmal zu sehen ob mit dem EJB-Kram (EntityManager) auch alles funktionier. DataSource und JNDI wurden vorher auch angelegt.
Beim deployen erhalte ich aber dann folgenden Fehler: Caused by: java.lang.ClassNotFoundException: de.eye4eye.itea.model.User
Also habe ich das ear untersucht, die jars und das war waren alle vorhanden aber im application.xml stand nur das
XML:
<application>
<display-name>itea-application</display-name>
<description></description>
<module>
<ejb>itea-persist-ejb-1.0.0-SNAPSHOT.jar</ejb>
</module>
<module>
<web>
<web-uri>itea-webapp-1.0.0-SNAPSHOT.war</web-uri>
<context-root>/itea-webapp</context-root>
</web>
</module>
</application>
XML:
<module>
<java>itea-model-1.0.0-SNAPSHOT</java>
</module>
<module>
<java>itea-presenter-1.0.0-SNAPSHOTr</java>
</module>
Wieso werden die Klassen nicht geladen, obwohl die Jars vorhanden sind? (zimlich viel Text für so eine kurze Frage

Ich hoffe einer der Spezialisten hier kann mir weiterhelfen
Zuletzt bearbeitet von einem Moderator: