【问题标题】:tomcat restart webapp from command linetomcat 从命令行重新启动 webapp
【发布时间】:2012-09-27 13:28:13
【问题描述】:

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

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

【问题讨论】:

标签: jakarta-ee tomcat


【解决方案1】:

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

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

touch web.xml

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

【讨论】:

  • 只有在 <Host> 元素上具有属性 autoDeploy=true 时才适用(默认情况下)。
  • 相信你想说这重新部署了应用。如果你去改变爆炸的战争目录中的一个属性文件,然后触摸战争,它将重新部署,将你的所有更改重置为最初在战争中的更改。
【解决方案2】:

我是这样做的:

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

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

  1. 使用 curl 或任何你喜欢的命令行工具来获取 URl &lt;yourserver&gt;/manager/text/reload?path=/&lt;context_path&gt;

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

【讨论】:

  • 成功了!!谢谢!!
  • 谷歌搜索仍然向我显示了这个帖子,这就是我要找的内容
【解决方案3】:

如果无法访问管理器应用程序,您将无法执行此操作。如果您可以访问管理器应用程序,但仍想使用命令行而不是 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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-15
        • 2015-01-10
        • 1970-01-01
        • 2014-10-18
        • 2011-03-03
        • 2021-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多