Glassfish2, Seam2, Maven2 - Probleme mit Setup

DerGrinsemann

Mitglied
Hallo!

Ich versuche nun jetzt seit Tagen ein (mitgeliefertes) Example von Seam2 auf Maven2 und Glassfish2 umzustellen.

... aber es gelingt mir einfach nicht ...

In der Zwischenzeit läuft der Build zwar durch, Glassfish beschwert sich nicht (mehr) beim deployen ... funktionieren tut es trotzdem nicht.

Hat jemand von euch vielleicht ein ähnliches Projekt konfiguriert und lässt mich über den Tellerrand sehen!? Ich kenne in der Zwischenzeit so ziemliches jedes Seam-Tutorial im Internet.

Marco
 
Mit folgender Konfiguration beschwert sich Glassfish mit
Code:
Bereitstellen der Anwendung in Domäne fehlgeschlagen; 
Eine dem persistence-unit-ref-name [bookingEntityManagerFactory] entsprechende Fortdauereinheit im Bereich des Moduls mit dem Namen [NewsContest] konnte nicht aufgelöst werden. Überprüfen Sie Ihre Anwendung. Eine dem persistence-unit-ref-name 
[bookingEntityManagerFactory] entsprechende Fortdauereinheit im Bereich des Moduls mit dem Namen [NewsContest] konnte nicht aufgelöst werden. Überprüfen Sie Ihre Anwendung.

Anbei meine pom's

Code:
<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>at.brisk</groupId>
    <artifactId>NewsContest</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>NewsContest</name>
    <url>http://maven.apache.org</url>

    <modules>
        <module>NewsContest-ejb</module>
        <module>NewsContest-war</module>
        <module>NewsContest-ear</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>at.brisk</groupId>
                <artifactId>NewsContest-ejb</artifactId>
                <version>1.0-SNAPSHOT</version>
                <type>ejb</type>
            </dependency>
            <dependency>
                <groupId>at.brisk</groupId>
                <artifactId>NewsContest-war</artifactId>
                <version>1.0-SNAPSHOT</version>
                <type>war</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

ear-pom:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>NewsContest</artifactId>
        <groupId>at.brisk</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>at.brisk</groupId>
    <artifactId>NewsContest-ear</artifactId>
    <name>NewsContest-ear</name>
    <packaging>ear</packaging>
    <version>1.0-SNAPSHOT</version>
    <url>http://maven.apache.org</url>

    <dependencies>
        <dependency>
            <groupId>at.brisk</groupId>
            <artifactId>NewsContest-ejb</artifactId>
            <type>ejb</type>
        </dependency>
        <dependency>
            <groupId>at.brisk</groupId>
            <artifactId>NewsContest-war</artifactId>
            <type>war</type>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <configuration>
                    <defaultLibBundleDir>lib</defaultLibBundleDir>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                        </manifest>
                    </archive>
                    <modules>
                        <ejbModule>
                            <groupId>org.jboss.seam</groupId>
                            <artifactId>jboss-seam</artifactId>
                        </ejbModule>
                        <ejbModule>
                            <groupId>at.brisk</groupId>
                            <artifactId>NewsContest-ejb</artifactId>
                        </ejbModule>
                        <webModule>
                            <groupId>at.brisk</groupId>
                            <artifactId>NewsContest-war</artifactId>
                        </webModule>
                    </modules>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

ejb-pom:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <artifactId>NewsContest</artifactId>
        <groupId>at.brisk</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    
    <groupId>at.brisk</groupId>
    <artifactId>NewsContest-ejb</artifactId>
    <name>NewsContest-ejb</name>
    <packaging>ejb</packaging>
    <version>1.0-SNAPSHOT</version>
    <url>http://maven.apache.org</url>

    <repositories>
        <repository>
            <id>JBoss Maven Repo</id>
            <name>JBoss Maven Repo</name>
            <url>http://repository.jboss.com/maven2/</url>
        </repository>
        <repository>
            <id>maven2-repository.dev.java.net</id>
            <name>Java.net Repository for Maven</name>
            <url>http://download.java.net/maven/2/</url>
            <layout>default</layout>
        </repository>
    </repositories>

    <properties>
        <seam.version>2.1.1.GA</seam.version>
        <hibernate.version>3.2.6.ga</hibernate.version>
        <hibernate.entitymanager.version>3.3.2.GA</hibernate.entitymanager.version>
        <hibernate.annotations.version>3.3.1.GA</hibernate.annotations.version>
        <hibernate.validator.version>3.0.0.ga</hibernate.validator.version>
    </properties>

    <dependencies>
        
        <!-- Others -->
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-ejb_3.0_spec</artifactId>
            <version>1.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>

        <!-- Seam dependencies -->
        <dependency>
            <groupId>org.jboss.seam</groupId>
            <artifactId>jboss-seam</artifactId>
            <version>${seam.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.seam</groupId>
            <artifactId>jboss-seam-ui</artifactId>
            <version>${seam.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.seam</groupId>
            <artifactId>jboss-seam-debug</artifactId>
            <version>${seam.version}</version>
        </dependency>

        <!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate.entitymanager.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>${hibernate.annotations.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>${hibernate.validator.version}</version>
        </dependency>

        <dependency>
            <groupId>javax.el</groupId>
            <artifactId>el-api</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>1.2_04-p02</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ejb-plugin</artifactId>
                <configuration>
                    <ejbVersion>3.0</ejbVersion>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

war-pom
Code:
<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <artifactId>NewsContest</artifactId>
        <groupId>at.brisk</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    
    <groupId>at.brisk</groupId>
    <artifactId>NewsContest-war</artifactId>
    <name>NewsContest-war</name>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <url>http://maven.apache.org</url>
 
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Ergänze ich die war-pom um
Code:
<dependencies>
        <dependency>
            <groupId>at.brisk</groupId>
            <artifactId>NewsContest-ejb</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

kann ich zwar problemlos deployen, hab aber im server.log folgende Fehlermeldung:
Code:
WebModule[/NewsContest]PWC1275: Ausnahmefehler beim Senden des durch Kontext initialisierten Ereignisses an die Zielgerätinstanz von Klasse org.jboss.seam.servlet.SeamListener
java.lang.IllegalStateException: duplicate factory for: org.jboss.seam.web.webSession (duplicate is specified in components.xml)

Weiters befinden sich dadurch alle Lib's doppelt im EAR - einmal im /lib und einmal im WAR-Package /WEB-INF/lib.

Jemand eine Idee?

Marco
 
Die letzte Fehlermeldung im server.log
Code:
WebModule[/NewsContest]PWC1275: Ausnahmefehler beim Senden des durch Kontext initialisierten Ereignisses an die Zielgerätinstanz von Klasse org.jboss.seam.servlet.SeamListener
java.lang.IllegalStateException: duplicate factory for: org.jboss.seam.web.webSession (duplicate is specified in components.xml)
konnte ich auch beheben.

Ich habe die "jboss-seam ... .jar" mehrmals eingebunden - im Root vom EAR, im lib vom EAR und im lib vom WAR. In dieser jar befindet sich aber eine components.xml mit einer grundlegenden Konfiguration. Beim Init sucht Seam nach allen components.xml Dateien ... :p

Nach einer guten Flasche Rotwein und intensiven Studium von "Seam in Action / Manning" sind mir überhaupt einige Zusammenhänge klar geworden - im besonderen EJB und Seam-Beans (Handling und JNDI-Lookup).

Einige Fragen sind zwar noch offen - aber das ist ein anderes Thema!

Marco
 
Hi,

ich stehe von einem ähnlichen Problem:

In meinem EJB-Projekt brauche ich einerseits die @WebRemote-Annotation für die entsprechende Methode. Andererseits wird aber gesagt, dass das jboss-seam-remoting.jar auch im WAR-Projekt liegen soll.
Nun habe ich das Problem, dass ich mit Maven arbeite, der Eintrag in nur einer pom.xml auftauchen darf, ich jedoch in beiden Projekten auf dieses Jar zugreifen muss.

Hat da jemand eine Idee, wie man das am besten lösen kann?

Gruß
 

Neue Beiträge

Zurück