10 Stimmen

Java-Webprojekt, das ein anderes Java-Projekt referenziert

Ich habe eine Java Project für die ich jetzt eine Webschnittstelle erstelle, indem ich ein Dynamic Web Project von Eclipse. Das Webprojekt besteht aus einem einzigen servlet und zwei JSP 's. Etwa so:

/JavaApplication
  /src
  /lib
  /resources
/WebApplication
  /src
    /Servlet.java
  /WebContent
    /WEB-INF
    index.jsp
    other.jsp

Jetzt muss ich auf Folgendes verweisen JavaApplication von WebApplication um seine Klassen für die Verarbeitung von Webanfragen zu verwenden. Wie lässt sich das am besten bewerkstelligen? Meine Idee ist die Erstellung einer .jar de la JavaApplication , die alle .class Dateien, /resources y /libs . Auf diese Weise könnte ich die .jar-Datei in die Webanwendung einbinden und eine einzige .war Datei, die die gesamte Anwendung enthält.

Was meinen Sie dazu? Wie wird dieses Problem normalerweise gelöst?

Hinweis: Ich möchte das Java-Projekt nicht in ein Web-Projekt umwandeln.

0 Stimmen

Ich hatte das gleiche Problem. Eine Antwort in: stackoverflow.com/questions/1693322/ gelöst.

16voto

BalusC Punkte 1034465

Fügen Sie in den Eclipse-Projekteigenschaften das Projekt zur Gruppe Java EE-Modul-Abhängigkeiten (Eclipse 3.5 oder älter)

Java EE Module Dependencies

o Bereitstellungsversammlung (Eclipse 3.6 oder neuer) Eintrag in den Projekteigenschaften.

Deployment Assembly

Auf diese Weise kümmert sich Eclipse darum, das Richtige zu tun, um eine WAR aus dem Ganzen zu erstellen (sie endet in /WEB-INF/lib ). Es ist keine weitere Konfiguration erforderlich, auch nicht ein wenig Tüftelei in Pfad erstellen .

15voto

Pascal Thivent Punkte 548176

Unter Eclipse können Sie Folgendes deklarieren Projekt-Referenzen für ein bestimmtes Projekt, in Ihrem Fall die Webanwendung. Klicken Sie dazu mit der rechten Maustaste auf Ihr Webanwendungsprojekt und wählen Sie dann Eigenschaften > Projektreferenzen und wählen Sie die JavaApplication Projekt. Dies sollte es Ihnen ermöglichen, den Code aus dem JavaApplication Projekt aus dem WebApplication ohne einen WAR bauen zu müssen. Dies ist eine Lösung für Entwicklung .

Für Standard Bereitstellung (außerhalb der IDE), sollten Sie tatsächlich eine Standard-WAR erstellen. Um dies zu tun, müssen Sie Ihr Paket JavaApplication als JAR einschließlich der .class Dateien und die Dateien unter /resources pero pas die Bibliotheken, von denen es abhängt (JARs unter /lib ). Diese Abhängigkeiten landen dann in der WEB-INF/lib Verzeichnis der WAR, neben dem JAR Ihrer JavaApplication . Diese Schritte werden in der Regel mit Tools wie Ameise o Maven .

4voto

Heether Punkte 102

Verbindung einer Java-Anwendung mit einer Web-Anwendung für die Entwicklung :

Rechtsklick auf Webprojekt :

Eigenschaften>Projektreferenzen> Fügen Sie das Java-Projekt hinzu, auf das Sie verweisen möchten

Gehen Sie nun in der Registerkarte Eigenschaften des Webprojekts auf

Eigenschaften>Bereitstellungsbaugruppe> das Projekt manuell hinzufügen und die Anwendung ausführen

2voto

Ziehen Sie den Wechsel zur EAR-Ebene in Betracht, wenn Ihr Webcontainer dies unterstützt.

Der knifflige Teil bei gemeinsamem Code ist die Frage, wo der gemeinsame Code untergebracht werden soll. Eine Kopie in der Webanwendung? Eine Kopie im Webcontainer? Wenn man es mit der "gemeinsamen Nutzung dieser Klassen" übertreibt, kann das zu Problemen mit dem Klassenlader führen.

Wenn Sie zwei getrennt Webanwendungen gemeinsamen Java-Code in ein separates Eclipse-Projekt refaktorisieren und von beiden WAR-Projekten darauf verweisen.


EDIT: Offenbar habe ich die Problembeschreibung falsch gelesen und dachte, Sie fragten nach einer bestehenden und einer neuen Webanwendung, die Code gemeinsam nutzen.

Wenn Sie ein Eclipse-Projekt mit Ihrer Anwendung haben und ein weiteres mit Ihrem Web-Frontend, dann können Sie Ihre Anwendung die notwendigen Ressourcen exportieren lassen, die der "Export WAR" in Eclipse Java EE in eine jar-Datei verpacken und in WEB-INF/lib für Sie ablegen kann. Sie müssen dies explizit mit einem Häkchen in Properties -> Java EE Module Dependencies für Ihr Webprojekt angeben. Erwarten Sie, dass Sie ein wenig experimentieren müssen - ich habe eine Weile gebraucht, um dies zu lernen.

0voto

Antz Punkte 281

Normalerweise würden Sie eine API-Schnittstelle mit Remote Service Beans aus der Java-Anwendung erstellen, die die Methoden bereitstellen, die Sie in der Webanwendung aufrufen möchten. Sie würden einen Proxy der API-Schnittstelle in Ihre Webanwendung einbinden, der die entfernte Service-Bean in der Java-Anwendung aufruft. Denken Sie daran, dass Sie die entfernte Bean in der Datei web.xml registrieren müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X