Wie Sie festlegen, tomcat Arbeit im debug-Modus?
Ich bereitstellen einer Anwendung auf dem tomcat-Kontext zu xml. Ich will den tomcat-Arbeit im debug-Modus, ich bedeutet wenn ich etwas ändern innerhalb einer Funktion, wie ändern
String a="123";
zu
String a="456";
tomcat sollte sich das ändern ohne reload der Anwendung.
Den web01.xml unter %CATALINA_HOME%/conf/Catalina/localhost
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="d:/document/workspace3.6/web01/WebContent" path="/web01" reloadable="false" debug="1" ></Context>
aber jetzt tomcat hat nicht gearbeitet wie ich es erwartet habe, wenn ich ersetzen Sie die alte class Datei mit der neuen version, ich muss starten Sie tomcat neu, um die änderung zu bekommen.
Warum tomcat nicht neu laden der Klasse,Wie soll ich das machen zu lassen, arbeiten wie der debug-Modus?
Ich bin nicht Eclipse verwenden jetzt. und ich möchte nicht reloadable="true", dieser lädt dann die gesamte Anwendung, wenn die Klasse geändert.
Ich verwendet tomcat5.5.23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, hier ein Aktuelles Beispiel:
Habe ich die
cnas-war
maven-Projekt. Sobald ich es bauen mit Maven, bekomme ich die folgende Verzeichnis:Hier habe ich all die Dinge, die Sie normalerweise bekommen würde, verpackt in der .war-Datei, wie .class-Dateien .jsp-Dateien .jar-Dateien etc. Effektiv ist es das .war-Datei explodierte.
Ich habe auch einen Tomcat 5.5, das speziell für die Bereitstellung dieses Krieges, geschickt platzierte in der tomcat_cnas Ordner. In der Tomcat-config-Datei (
conf\server.xml
) habe ich Folgendes:Wie Sie sehen können, in den "Kontext" - tag, ich habe eine docBase-Eigenschaft verweist auf das snapshot-Verzeichnis (das, in dem der Krieg explodierte nach maven baut). Nun, mit dieser Einstellung und mit diesem Projekt in Eclipse importiert, wenn ich einen maven-build, und dann beginnen Sie diesen Kater, der Krieg wird bereitgestellt sein und ausgeführt werden. An diesem Punkt, wenn ich den Inhalt ändern einer Methode in einem .java Datei in Eclipse (und speichern), dann wird der code automatisch berücksichtigt, indem Sie Tomcat und die Anwendung anders Verhalten, ohne zusätzliche re-deployment. Hoffe, das hilft
Bist du eigentlich verwirrend die Begriffe "Debuggen" und heiß bereitstellen. Sie können die Konfiguration von Tomcat für den debug-Modus, und dann aus der Ferne Debuggen Sie Ihre Anwendung, die im tomcat, so dass, wenn Sie fügen Sie einen Haltepunkt in deinen code, der debugger springt zu diesem Haltepunkt und angehalten werden.
Was Sie tatsächlich benötigen, gibt es die Möglichkeit von der hotdeploy eine Anwendung. Mit tomcat, wenn Sie ändern die .java-Dateien und kopieren Sie Sie in das Arbeitsverzeichnis von tomcat, du wirst genau das bekommen, was Sie wollen, nämlich die Fähigkeit, etwas zu ändern, in eine Klasse und haben den Laufenden tomcat-Anwendung bereitgestellt Rechnung ohne Neuimplementierung der gesamten Anwendung. Sie können automatisieren Sie diese, indem Sie in Ihrem tomcat-Anwendungs-Kontext (entweder in der tomcat server.xml Datei oder in einem bestimmten Projekt context.xml -Datei) für Ihre Anwendung als Arbeitsverzeichnis das Verzeichnis, in dem Sie Ihre Projekt-code kompiliert wird.
hier ein Aktuelles Beispiel:
Lassen Sie uns sagen, Sie haben ein maven-Projekt in dem Verzeichnis c:\myProject. Würden Sie die Quelldateien in der c:\myProject\src und wenn dann kompilieren Sie es bekommen würde, Sie die war-Datei und eine explodierte Verzeichnis der war-Datei Inhalt in die c:\myProject\target\myProject.war bzw. c:\myProject\target\myProject. Nun, wenn Sie konfigurieren Sie Ihren tomcat, so dass für das myProject tomcat-Kontext, youd haben das working directory konfiguriert c:\myProject\target\myProject dann jedes mal, wenn Sie ändern .java-Datei, die .Klasse zugehörige Datei wird aktualisiert werden, in der Ziel - (und jetzt auch) dir, und tomcat wird das berücksichtigen.
Habe ich tatsächlich verwendet so ein setup zu entwickeln, mit tomcat, aber es ist nicht die beste. First off tomcat wird hotdeploy nur bestimmte änderungen, wie etwa, wenn Sie ändern Sie etwas in den Körper einer bereits vorhandenen Methode dar. Andere änderungen werden nicht berücksichtigt werden, wie das hinzufügen einer neuen Methode - diese haben Sie, um eine vollständige Umschichtung zu haben Sie berücksichtigt.
Weitaus bessere Lösung ist die Verwendung von maven mit dem maven-jetty-plugin. Dieses Ding funktioniert wirklich, wie Sie wollen: jede änderung, die Sie tun, um eine Klasse von jsp-Datei wird von mir sofort berücksichtigt und sichtbar in der Laufenden app im inneren Steg.
Konfigurieren von Tomcat 5.5 für den debug-Modus?
Zu tun, was Sie versuchen zu tun, müssen Sie einige Sache wie java-rebel oder etwas ähnliches Ding ich weiß, es gibt einige open-source -alternativen, das gleiche zu tun.