Wie zum einbetten von Tomcat 6?
Ich bin derzeit mit meinem webapps des Tomcat-6 in der Produktion, und die möchte bewerten ausführen von Tomcat im embedded-Modus.
Gibt es ein gutes tutorial oder eine andere Ressource außer dem, was in der api-Dokumentation?
- Jeder Grund für die Verwendung von Tomcat eher als Anlegestelle, die ist gut dokumentiert, die für diesen Anwendungsfall und Häufig verwendeten embedded? Wenn Sie einfach nur auf der Suche für ein Servlet-container, die Sie einbetten können, Jetty tut dies bereitwillig.
- Einbetten von Steg statt. Es ist jedoch tomcat-einbetten.
- Danke für den Zeiger. Dies bedeutet jedoch nicht so Aussehen, wie es abgeschlossen ist, aktiv weiterentwickelt oder gepflegt. Alle commits sind vom Mai 11, 2008, und einer der log-Meldungen nennt es "längst nicht abgeschlossen".
- Lohnt einen Blick in dieses blog post: Einbetten Tomcat 7
- wie kann ein geschlossenes als nicht Konstruktive Frage haben 43 upvotes!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Code spricht für sich selbst. Sehen pom.xml snippet und die Klasse zum ausführen von tomcat.
Aber dieser Beitrag ist, was einige im Alter, ich m, die Beantwortung meiner eigenen Antwort, wie Sie sparen könnten einige andere " Zeit
Ich auch angesichts der
404
Fehler und kämpfte einige Zeit. Sehen die log 'INFO: No default web.xml
', ich vermutete es (wenn das eine Warnung wäre schon leicht zu erkennen). Der trick wird mit derweb.xml
(rootContext.setDefaultWebXml("web.xml")
) geliefert mit Tomcat (conf/web.xml
). Der Grund dafür ist, enthält es das DefaultServlet, die dazu dient die statische Dateien, die gerne HTML, JS. Entweder verwenden Sie dieweb.xml
oder Registrierung der servlet manuell in Ihrem code.Nutzung:
Nicht vergessen, die Standard -
web.xml
im selben Verzeichnis wie das Programm oder den richtigen Speicherort.Es sollte angemerkt werden, dass der shutdown-hook ist inspiriert von Antonio ' s Antwort.
org.apache.catalina.startup.Embedded
ist veraltet und wird empfohlen, umorg.apache.catalina.startup.Tomcat
statt. Diese änderung viele Kette änderungen Folgen werden, um den code lauffähig.Gibt es eine Reihe von Gründen, warum man Tomcat über Steg:
Punkt #5 ist schon wichtig in meiner Arbeit. Ich kann zum Beispiel den direkten Zugang zu einer JSPWiki-Instanz über die Tomcat, aber es ist völlig unzugänglich, wenn mit Steg. Ich fragte nach einer Lösung, die im Jahr 2007 und haben noch nicht gehört, eine Antwort. Also ich gab schließlich auf und begann mit Tomcat 6. Ich habe mir in Glassfish und Grizzly, aber so weit Tomcat ist (erstaunlicherweise) die stabile und gut dokumentierte web-container (was nicht viel aussagt wirklich).
webapp.setParentLoaderPriority(true);
- ich denke, das ist in der Jetty-Dokumentation.Dies könnte helfen.
Wenn Sie die Quelle download-Paket für Tomcat6.x, erhalten Sie diese Klasse:
http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/startup/Catalina.html#main(java.lang.String%5B%5D)
Ist ein Beispiel, wie die Embedd-Klasse: eine shell zu stoppen|starten, einen bestimmten Tomcat-installation. (Ich meine, Sie können bis
CATALINA_BASE
auf einem vorhandenen Tomcat-installation).Wenn Sie kompilieren diese können Sie ausführen, wie diese:
java -D"catalina.Basis=%CATALINA_BASE%" -D"catalina.home=%CATALINA_HOME%" org.apache.catalina.startup.Catalina start
Ich bin mir nicht sicher, wie Sie zu ändern Sie diesen code, um den server Herunterfahren noch obwohl!
Nach dem Lesen dieses thread vor einigen Monaten, schrieb ich dieses Projekt: spring-embedded-tomcat.
Es kann verwendet werden, zum einbetten von tomcat6 in Spring-basierten Anwendungen.
Ich glaube mit Tomcat 7 oder Jetty 9 Einbettung ist einfacher. Hier finden Sie eine nette Einführung: http://www.hascode.com/2013/07/embedding-jetty-or-tomcat-in-your-java-application/