2012-03-27 5 views
0

Ich habe ein GWT-Modul, das mehrere DTOs enthält, auf die ich sowohl auf dem Servlet als auch auf dem Client zugreifen möchte. Während in Eclipse zu entwickeln, habe ich das Modul ein separates Projekt mit einem GWT xml:"Gemeinsames" GWT-Modul

<module rename-to='commonmodels'> 
    <source path="models"/> 
    </module> 

Ich habe ein anderes GWT-Projekt, das UI enthält, sowie Servlet-Code. Ich das commonmodels Projekt (Build mit Weg-> Projekte-> Add) und enthalten die Modul Aussage in meinem Hauptprojekt ist:

<inherits name="com.techflow.bcweb.common.CommonModels" /> 

Dann mache ich einen RPC-Aufruf, die ein Objekt erstellt (die seine Klasse definiert in CommonModels) auf dem Servlet und gibt es an den Client zurück.

Dies alles scheint im gehosteten GWT-Modus zu funktionieren, aber wenn ich es ausführen und auf einem Server bereitstellen, löst es eine ClassDefNotFound-Ausnahme aus. Ich habe den Krieg überprüft und bestätigt, dass die .class-Datei aus dem enthaltenen Modul nicht vorhanden ist. Meine Frage ist - wie sage ich dem GWT-Compiler, nicht nur die enthaltenen Modulklassen in Javascript zu kompilieren, sondern diese Klassen auch für das Servlet zugänglich zu machen? Ich weiß, dass Sie in einem GWT-Projekt einen "freigegebenen" Ordner erstellen können, der seine Klassen sowohl dem Client als auch dem Servlet zugänglich macht. Gibt es eine Möglichkeit, die Klassen in einem eigenständigen Modul als "gemeinsam genutzt" zu markieren, so dass alle GWT-Module, die es erben, auf seine Klassen sowohl im Client als auch im Servlet zugreifen können?

Vielen Dank im Voraus für jede Hilfe!

+0

Ihr Problem hängt nicht mit GWT zusammen. Sie haben nicht genügend darüber geschrieben, wie Sie Ihre Anwendung erstellen oder auf dem Server bereitstellen. – mabn

Antwort

0

Wenn Sie Ihr Hauptprojekt auf einem Server bereitstellen, weiß das Projekt nicht einmal, dass Ihr anderes Projekt existiert! Die Eclipse "Project >> Add" -Ding funktioniert nur, wenn Sie das Projekt in Eclipse ausführen. Um dies zu beheben, müssen Sie nur eine JAR-Datei erstellen, um die commonmodels Binärdateien enthalten, und es dann Klassen Binärordner zu Ihrem Hauptprojekt hinzufügen:

war/WEB-INF/lib/ 

Es sei denn, Sie verwenden Maven ... installieren Sie dann nur das Projekt in Ihr Repository und fügen Sie eine Abhängigkeit in Ihre pom.xml-Datei hinzu.

+0

Danke für die Antwort Renato. Ich wollte einen bequemeren Weg finden, dies zu tun, ohne ein Glas zu machen, aber es scheint, als wäre das der Standardansatz. Ich habe es versucht und es funktioniert super. – Fangbot

+0

Der einzige andere Weg, den ich kenne, ist Maven zu benutzen. – Renato

Verwandte Themen