tomcat从命令行重启webapp

时间:2012-09-27 13:28:14

标签: java-ee tomcat

我有一个PCI DSS兼容环境,它运行多个应用程序,我想只重新启动一个应用程序,而无需重新启动服务器。我没有经理,因为显然在这种环境下不允许这样做。

如何通过命令行重新启动单个Web应用程序?

5 个答案:

答案 0 :(得分:25)

我知道我迟到了,但是为了从命令行重新加载应用程序你可以做的一个小技巧是转到应用程序的web.xml并简单地触摸它。

touch web.xml

tomcat每次注意到该文件发生变化时都会重新加载应用程序,如果你只是触摸它,你实际上并没有修改文件,只是时间戳。

答案 1 :(得分:23)

我是这样做的:

  1. 确保您的tomcat用户数据库中具有“manager-script”角色的用户。这通常意味着您在${TOMCAT}/conf/tomcat-users.xml
  2. 中有这样的行
    <user username="admin" password="secret" roles="manager-gui,manager-script"/>
    

    否则,由于跨站点请求伪造(CSRF)保护,您将收到403错误。

    1. 使用curl或您喜欢的任何命令行工具来获取URl <yourserver>/manager/text/reload?path=/<context_path>

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

答案 2 :(得分:2)

无法访问管理器应用程序,您无法执行此操作。如果您可以访问管理器应用程序,但仍希望使用命令行而不是Web浏览器,则可以尝试使用名为tomcat-manager的command-line script for managing tomcat。它需要Python,但允许你从Unix shell中执行以下操作:

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

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

答案 3 :(得分:0)

不幸的是,我认为没有办法从命令行执行此操作。相反,我建议您查看是否有办法托管您需要在单独的Tomcat实例中重新启动的单个应用程序,以便您可以重新启动该实例而不会影响其他应用程序。

答案 4 :(得分:0)

works将app.war的名称更改为temp app.war.bkp(任何要备份的名称),然后在tomcat删除webapp的源文件夹时,将.bkp的名称更改为原始名称。 仅适用于控制台访问用户。