web-dev-qa-db-fra.com

tomcat redémarre la webapp à partir de la ligne de commande

J'ai un environnement compatible PCI DSS qui exécute plusieurs applications et je veux redémarrer une seule application sans redémarrer le serveur. Je n'ai pas le gestionnaire car apparemment ce n'est pas autorisé dans cet environnement.

Comment puis-je redémarrer une seule application Web via la ligne de commande?

22
Itai Sagi

Je sais que je suis en retard à la fête, mais une petite astuce que vous pouvez faire pour recharger l'application à partir de la ligne de commande est d'aller sur le web.xml de l'application et de simplement la toucher.

touch web.xml

Tomcat recharge l'application à chaque fois qu'il remarque un changement sur ce fichier, si vous le touchez simplement, vous ne modifiez pas réellement le fichier, juste l'horodatage.

33
Ulukai

Voici comment je le fais:

  1. Assurez-vous d'avoir un utilisateur avec le rôle "manager-script" dans votre base de données d'utilisateurs Tomcat. Cela signifie généralement que vous avez une ligne comme celle-ci dans votre ${Tomcat}/conf/Tomcat-users.xml:
<user username="admin" password="secret" roles="manager-gui,manager-script"/>

Sinon, vous obtiendrez une erreur 403 en raison de la protection contre la falsification des demandes intersites (CSRF).

  1. Utilisez curl ou tout autre outil de ligne de commande que vous souhaitez pour récupérer l'URl <yourserver>/manager/text/reload?path=/<context_path>:

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

Sans accès à l'application gestionnaire, vous ne pouvez pas le faire. Si vous pouvez accéder à l'application gestionnaire et que vous souhaitez toujours utiliser la ligne de commande au lieu de votre navigateur Web, vous pouvez essayer ceci script de ligne de commande pour gérer Tomcat appelé Tomcat-manager. Il nécessite Python, mais vous permet de faire des choses à partir d'un shell Unix comme:

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

et:

$ Tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war
2
kotfu

les travaux changent le nom de app.war en temp app.war.bkp (n'importe quel nom pour la sauvegarde), puis lorsque Tomcat supprime le dossier source de webapp, changez le nom de .bkp en nom d'origine. cela ne fonctionne que pour l'utilisateur d'accès à la console.

0

Malheureusement, je ne pense pas qu'il existe un moyen de le faire à partir de la ligne de commande. Au lieu de cela, je recommanderais de voir s'il existe un moyen d'héberger la seule application dont vous avez besoin pour redémarrer dans une instance distincte de Tomcat afin de pouvoir redémarrer cette instance sans affecter les autres applications.

0
Zeleres