tomcat restart webapp from command line

前端 未结 5 2205
南旧
南旧 2020-12-28 14:53

I have a PCI DSS compliant environment which runs several apps and I want to restart only one app without restarting the server. I don\'t have the manager because apparently

相关标签:
5条回答
  • 2020-12-28 15:12

    Without access to the manager application, you can't do it. If you can get access to the manager application, and still want to use the command line instead of your web browser, you can try this command-line script for managing tomcat called tomcat-manager. It requires Python, but allows you to do stuff from a Unix shell like:

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

    and:

    $ tomcat-manager --user=admin --password=newenglandclamchowder \
    > http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war
    
    0 讨论(0)
  • 2020-12-28 15:12

    works change the name of the app.war to temp app.war.bkp(any name for backup) and then when tomcat delete the source folder of webapp change the name of .bkp to original name. this work only for console access user.

    0 讨论(0)
  • 2020-12-28 15:24

    I know I am late to the party, but a little trick you can do in order to reload the app from the command line is to go to the web.xml of the application and simply touch it.

    cd webapps/<webapp-name>/WEB-INF/

    touch web.xml

    tomcat reloads the application every time it notices a change on this file, if you simply touch it, you are not actually modifying the file, just the timestamp.

    0 讨论(0)
  • 2020-12-28 15:25

    Here's how I do it:

    1. Ensure that you have user with "manager-script" role in your tomcat user database. That usually means that you have line like this in your ${TOMCAT}/conf/tomcat-users.xml :
    <user username="admin" password="secret" roles="manager-gui,manager-script"/>
    

    Otherwise, you will get a 403 error because of cross-site request forgery (CSRF) protection.

    1. Use curl or whatever command line tool you like to fetch the URl <yourserver>/manager/text/reload?path=/<context_path>:

      curl --user user:secret http://localhost:8080/manager/text/reload?path=/mypath  
      
    0 讨论(0)
  • 2020-12-28 15:31

    Unfortunately I do not think there is a way to do this from the command line. Instead, I would recommend seeing if there is a way to host the single application you need to restart in a separate instance of Tomcat so you can restart that instance without affecting the other applications.

    0 讨论(0)
提交回复
热议问题