2012-09-27 20 views
8

Ich habe eine PCI-DSS-konforme Umgebung, die mehrere Apps ausführt und ich möchte nur eine App neu starten, ohne den Server neu zu starten. Ich habe den Manager nicht, weil es anscheinend in dieser Umgebung nicht erlaubt ist.Tomcat Neustart webapp von der Befehlszeile

Wie gehe ich vor, um eine einzelne Webanwendung über die Befehlszeile neu zu starten?

+0

Mögliche Duplikate von [Was ist eine einfache, schnelle Möglichkeit, eine Webapp in tomcat in der Entwicklungsumgebung neu zu laden?] (Https://stackoverflow.com/questions/1800784/whats-an-easy-quick-way-to-reload -a-webapp-in-tomcat-in-dev-environment) – rogerdpack

Antwort

0

Leider glaube ich nicht, dass es einen Weg gibt, dies über die Befehlszeile zu tun. Stattdessen empfehle ich, zu sehen, ob es eine Möglichkeit gibt, die einzelne Anwendung zu hosten, die Sie in einer separaten Instanz von Tomcat neu starten müssen, damit Sie diese Instanz neu starten können, ohne die anderen Anwendungen zu beeinträchtigen.

2

Ohne Zugriff auf die Manager-Anwendung können Sie es nicht tun. Wenn Sie Zugriff auf die Manager-Anwendung erhalten und trotzdem die Befehlszeile anstelle Ihres Webbrowsers verwenden möchten, können Sie dies unter der Bezeichnung tomcat-manager command-line script for managing tomcat versuchen. Es erfordert Python, sondern ermöglicht es Ihnen Sachen von einem Unix-Shell zu tun:

$ tomcat-manager --user=admin --password=newenglandclamchowder \ 
> http://localhost:8080/manager/ reload /myapp 

und:

$ tomcat-manager --user=admin --password=newenglandclamchowder \ 
> http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war 
+0

Vielleicht Manager kann nur für localhost aktiviert werden? – andho

17

Hier ist, wie ich es tun:

  1. Stellen Sie sicher, dass Sie Benutzer mit "manager-script" -Rolle in Ihrer Tomcat-Benutzerdatenbank. Das bedeutet in der Regel, dass Sie in Ihrer ${TOMCAT}/conf/tomcat-users.xml Zeile wie diese haben:
<user username="admin" password="secret" roles="manager-gui,manager-script"/> 

Andernfalls werden Sie wegen der Cross-Site Request Forgery (CSRF) Schutz einen 403 Fehler.

  1. Verwenden curl oder was auch immer Kommandozeilen-Tool wie Sie die URL <yourserver>/manager/text/reload?path=/<context_path> holen:

    curl --user user:secret http://localhost:8080/manager/text/reload?path=/mypath 
    
+0

Es hat funktioniert !! Vielen Dank!! – JRichardsz

+0

Er sagte ausdrücklich, er hat nicht den Manager FWIW ... – rogerdpack

+0

Eine google Suche zeigte mir noch diesen Thread und das ist, was ich gesucht habe – Kunal

10

Ich weiß, ich bin spät, um die Partei, sondern ein Der kleine Trick, den Sie tun können, um die App von der Kommandozeile aus neu zu laden, besteht darin, zur web.xml der Anwendung zu gehen und sie einfach zu berühren.

touch web.xml

tomcat lädt die Anwendung jedes Mal, wenn auf diese Datei eine Änderung bemerkt, wenn Sie es einfach berühren, Sie ändern nicht die Datei tatsächlich nur den Zeitstempel.

+0

Dies ist nur wahr, wenn Sie das Attribut 'autoDeploy = true' auf Ihrem' haben 'Element (standardmäßig). –

+0

Ich glaube, Sie möchten sagen, dass dies die App neu implementiert. Wenn du eine Property-Datei im explodierten Krieg-Verzeichnis änderst und dann den Krieg berührst, wird sie neu verteilt und alle deine Änderungen werden mit den ursprünglichen im Krieg zurückgesetzt. – jbu

Verwandte Themen