Ich möchte Eclipse und Tomcat auf integrierte Weise einrichten, sodass Änderungen an meinen JSPs und Servlets (falls möglich) sofort übernommen werden, ohne dass eine Bereitstellung erforderlich ist.
Ok, dies ist eine dieser Fragen, die im gesamten Internet viele Antworten hat, aber alle scheinen unterschiedlich zu sein. (Verwenden Sie das Sysdeo-Plugin, verwenden Sie das JBOss-Plugin, machen Sie Dinge mit einer veralteten Eclipse, verwenden Sie stattdessen MyEclipse usw.) und ich konnte keine definitive Ressource finden, auf die ich verweisen kann. Was ist zu meinem Vorteil das einfachste und am meisten empfohlene Verfahren, um dies einzurichten?
Dies setzt voraus, dass Eclipse und Tomcat unabhängig voneinander ausgeführt werden. Ich habe es tatsächlich geschafft, sie mithilfe der folgenden Anweisungen in einer nicht heißen Bereitstellungsmethode zu integrieren: http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/index.html
Eclipse-Version Version: 3.4.2 (Ganymede) Tomcat v6.0.20
Antworten:
Es gibt zwei Möglichkeiten.
Erstens können Sie dies mit Eclipse mit einer geringfügigen Änderung der Konfiguration tun (siehe auch diesen ausführlichen Beitrag ).
Dies spiegelt weiterhin Codeänderungen wider, startet den Server jedoch nicht neu.
Zweitens habe ich das FileSync-Plugin schon lange verwendet:
WEB-INF/classes
Ihre Tomcat-Installation gesendet werden (dies entspricht fast der Konfiguration der Bereitstellungsassembly).So funktioniert es perfekt für mich. Jede nicht strukturelle Änderung wird sofort ohne erneute Bereitstellung reflektiert.
Update:
Weitere Informationen zu den Methoden für die Hot-Bereitstellung finden Sie hier .
Ich habe auch ein Projekt erstellt , das den Arbeitsbereich einfach mit dem Servlet-Container synchronisiert.
quelle
Modules
in der Serverkonfiguration auf die Registerkarte und dann auf "edit
Deaktivieren"auto deploy enabled
. Ich denke, dies ist der einfachste Weg. PS: Dein erster Weg funktioniert bei mir nicht.Lassen Sie Eclipse die Klassendateien einfach direkt in das Verzeichnis $ TOMCAT / webapps / MyWebApp / WEB_INF / classes schreiben. Konfigurieren Sie dann apache-tomcat, um zu überprüfen, ob die Klassendateien aktualisiert wurden, und laden Sie sie gegebenenfalls neu.
Um Tomcat so zu konfigurieren, dass eine Klasse bei Änderungen automatisch neu geladen wird, müssen Sie
bearbeiten
$TOMCAT/conf/context.xml
und einstellen:Möglicherweise müssen Sie Ihre
webapps/$YourWebApp/web.xml
Datei auch bearbeiten und neu laden und Folgendes hinzufügen :Ich kann mich nicht erinnern, ob beide Änderungen erforderlich sind, aber so habe ich meinen tomcat-6.0.18 so konfiguriert, dass er automatisch neu geladen wird.
quelle
Context
in die Datei server.xml einzufügen, sollten jedoch / WEB-INF / classes / und / WEB-INF überwachen / lib für Änderungen. Wo haben Sie über das Attribut für dasweb-app
Element gelesen ?Haftungsausschluss : Ich bin nur ein zufriedener Kunde, arbeite nicht für Zero Turnaround und bin in keiner Weise mit ihnen verbunden.
Schauen Sie sich JRebel an - Sie können Code ohne Neustart der Webanwendung erstellen. Grundsätzlich funktioniert es, indem Sie Ihre Klassen instrumentieren und ihre Änderungen anpassen. Es behandelt viel mehr Fälle als Hot Deployment , einschließlich:
Es ist kommerziell ( Preisangaben : 550 USD / Jahr ab Juni 2018) und enthält zahlreiche Plugins für Frameworks von Drittanbietern, darunter:
Sie erhalten eine kostenlose Testversion ganz schmerzlos - ich schlage vor, Sie probieren es aus.
quelle
Ändern Sie Ihren Arbeitsbereich in Eclipse in \ tomcat \ webapps. Da dies nur für Ihre Arbeit vorgesehen ist, sollte dies problemlos funktionieren. Alle Änderungen, die Sie in Eclipse vornehmen, befinden sich im selben Verzeichnis. Tomcat sucht nach Anwendungen, die bereitgestellt werden sollen
quelle
Erstellen Sie in der Serveransicht einen neuen Server und fügen Sie dem Server noch keine Ressource (Projekt) hinzu. Doppelklicken Sie auf den Server am Serverstandort. Wählen Sie "Tomcat-Installation verwenden". Ändern Sie "Bereitstellungspfad" in das Tomcat-Bereitstellungsverzeichnis (Beispiel: c: \ server \ Tomcat 7.0.14 \ webapps). Erweitern Sie "Veröffentlichungsbereich". Aktivieren Sie "Nach einem Build-Ereignis automatisch veröffentlichen". Speichern und schließen. Aktivieren Sie im Eclipse-Menü "Projekt -> Automatisch erstellen". Klicken Sie in der Serveransicht mit der rechten Maustaste auf Ihren Server, "Hinzufügen und Entfernen", und veröffentlichen Sie Ihr Projekt.
quelle
Warum nicht einen integrierten Tomcat-Server von mit in Eclipse verwenden, wenn dies nur für die Entwicklung ist? Sie können Server unter Fenster-> Einstellungen konfigurieren. Sobald es konfiguriert ist, wenn Sie einen JSP namens page.jsp haben, können Sie mit der rechten Maustaste darauf klicken und Auf Server ausführen auswählen. Unter Einstellungen-> Allgemein-> Webbrowser können Sie das Wetter auswählen, um den eingebauten oder einen externen Browser zu verwenden. Nehmen Sie einige Änderungen an Ihrem JSP vor, speichern und aktualisieren Sie Ihre Seite über den Browser. Die Änderungen werden automatisch übernommen, sobald Sie Ihren Browser speichern und aktualisieren.
quelle
Was hier für mich funktioniert ist:
context.xml wie folgt:
Dann habe ich auf der Registerkarte "Server" in Eclipse auf der Registerkarte "Module" das "automatische Neuladen" für alle bereitgestellten Module deaktiviert.
Lassen Sie auch die Standardkonfiguration, um die automatische Veröffentlichung zu ermöglichen.
Wenn Sie Maven mit WTP verwenden, vergessen Sie nicht, den Inhalt von src / main / resources zu belassen, da Eclipse darauf besteht, den Inhalt dieses Ordners des endgültigen Builds auszuschließen.
Nur mit all dem habe ich volle (VM) Klassen Hot-Deploy mit Ressourcen Hot-Deploy bekommen !!!
quelle
Zeigen Sie in Ihrer Entwicklungsumgebung einfach auf Ihren Tomcat-Server, um in dem Verzeichnis, in dem Sie sie entwickeln, nach JSPs zu suchen. Sobald Sie die Datei speichern, können Sie die Änderungen sehen.
quelle
Ich habe es geschafft, dies mit dem Spring Loaded JVM-Agenten in meiner Entwicklungsumgebung zum Laufen zu bringen. Während ich Spring-Webanwendungen entwickle, wird in der Beschreibung dieses Projekts erwähnt, dass dies der Fall ist
Mit dem folgenden Setup konnte ich Änderungen erhalten, die automatisch in einer angehängten Tomcat-Instanz veröffentlicht werden (die übliche Eclipse-WTP-Methode). Ich verwende Spring Tool Suite 3.7.3 basierend auf Eclipse Mars.2 (4.5.2).
-javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
.class
Konfigurieren Sie das-Dspringloaded=watchJars=
VM-Argument gemäß den Kommentaren dieses Problems, damit JARs zusätzlich zu den Projektdateien überwacht werden können .Starten Sie den Server und veröffentlichen Sie Dynamic Web Application-Projekte wie gewohnt darauf. Auch dies konnte ich mit Spring-Webanwendungen testen. Zum Beispiel wurden das Ändern von Code, das Hinzufügen / Subtrahieren von Methoden usw. in @ Controller-Klassen fast sofort angewendet, nachdem ich die Datei gespeichert und Eclipse erstellt und die geänderte Klasse veröffentlicht habe. Schließlich wurden im FAQ-Bereich des Spring Loaded-Projekts einige Fälle erwähnt, in denen die Dinge nicht neu geladen werden, sodass ein Neustart des Servers / der Anwendung erforderlich wäre. Diese Ausnahmen sind jedoch viel seltener.
Noch ein Hinweis: Dies funktioniert NICHT mit dem eingebetteten Pivotal tc Server oder VMware vFabric tc Server, der mit STS geliefert wird. Für diese Server gibt es die Option "Java Agent-basiertes Neuladen aktivieren (experimentell)", die jedoch die ältere Version 1.2.0 von Spring Loaded verwendet, die für mich nicht funktioniert hat.
quelle
Spring
, wie wäre es mit einerNon Spring
Bewerbung.Sind Sie offen für die Verwendung von Jetty für Entwicklungszwecke?
Wenn ja, ist es ziemlich einfach mit Maven zu verwenden - einfach ausführen
mvn jetty:run
quelle
Dies ist vielleicht nicht der beste Weg, aber es funktioniert für mich.
Ich verwende einen rsync-Befehl, um Änderungen von meinem JSP-Projekt mit $ contextPath zu synchronisieren.
Verwenden Sie das Remote-Debugging in Eclipse für Tomcat, um ein begrenztes Hot-Swapping von Code zu ermöglichen. Wenn Sie statische Felder ändern oder Methoden hinzufügen, müssen Sie das JAR exportieren und den Kontext neu starten.
quelle
Können wir die folgende Option verwenden? Doppelklicken Sie in Eclipse auf Server -> Serverstandorte -> Tomcat-Installation verwenden. Es übernimmt die Kontrolle über die Tomcat-Installation. Sie müssen den Server nicht neu starten, um Änderungen in Java-Klassen vorzunehmen.
quelle
Ich habe einen einfachsten Weg gefunden: Verwendung symbolischer Links: Ich denke, dies ist der schnellste Weg, da überhaupt keine Synchronisation stattfindet: Das Tomcat-Verzeichnis und Ihr Projektverzeichnis sind immer dasselbe Verzeichnis.
Tomcat erkennt die Änderungen regelmäßig und stellt Ihre Anwendung erneut bereit.
Es gibt auch eine Möglichkeit, Ihre Anwendung zu debuggen, daher halte ich sie demütig für eine gute Lösung.
Ich habe meine Lösung hier für alle Interessierten dokumentiert .
quelle
Falls Sie es eilig haben:
voila! :) :)
quelle
Klicken Sie in Eclipse im oberen Menü auf das Projekt und stellen Sie sicher, dass "Automatisch erstellen" ausgewählt ist. Dies hat mein Problem behoben. Ich habe Eclipse mit Tomcat unter Verwendung meiner Arbeitsbereich-Metadaten ausgeführt. Ich habe Maven auch in einem Dynamic Web Module-Projekt ausgeführt. Fügen Sie zur Überprüfung Ihre Anwendung zu Tomcat hinzu. Starten Sie Tomcat in Eclipse. Stellen Sie sicher, dass Ihre Anwendung bereitgestellt ist und ausgeführt wird. Öffnen Sie die Registerkarte Konsole in Eclipse. Nehmen Sie eine Änderung in Ihrer Anwendung vor. Nach einigen Sekunden sollte Ihre Änderung automatisch erstellt und für Tomcat bereitgestellt werden.
quelle
Am einfachsten und schnellsten: Richten Sie Eclipse so ein, dass beim Erstellen eine WAR-Datei generiert wird. Kopieren Sie diese WAR-Datei nach dem Erstellen in Ihr Tomcat-Webanwendungsverzeichnis. Tomcat erkennt die Änderung und aktualisiert die Site, ohne dass eine Bereitstellung erforderlich ist. Beachten Sie, dass dies nicht perfekt ist. Benutzer, die diese Webanwendung verwenden, haben möglicherweise eine nicht optimale Erfahrung, da Tomcat die Webanwendung "unter" ihnen neu startet. Dies passt jedoch zu Ihrer Anfrage.
quelle