【问题标题】:curl deployment of versioned war on TomcatTomcat上版本化战争的curl部署
【发布时间】:2018-01-09 16:56:21
【问题描述】:

我正在尝试在 Tomcat 上部署版本化战争。

很多人可能都知道,Tomcat 中有一个负载均衡器,它会将所有新会话重定向到最新版本的 war\app 上,您只需将版本放在两个 ## 之后(例如:@ 987654322@)

我正在使用 curl 成功部署:

curl -T "MyApp##001.war" https://${username}:${password}@${host}/manager/text/deploy?path=/MyApp&update=true" 

但是,一旦部署,我就找不到版本!

我在-Tpath=/ 之后尝试了所有可能的组合,这是一个错误还是我不能用 curl 做到这一点?

我想使用 Tomcat 管理器而不是将战争放在 /webapps 中,因为此脚本将完全符合我们的安全策略。

【问题讨论】:

    标签: java tomcat curl


    【解决方案1】:

    看起来您只是缺少version 参数:

    $ curl -T "MyApp##001.war" "https://${username}:${password}@${host}/manager/text/deploy?path=/MyApp&update=true&version=001"
    

    没有“版本”参数,Tomcat 不知道您正在尝试进行并行部署。事实上,您可能使用原始命令部署了无版本 WAR。

    您可能认为curl 以某种方式将文件名 (MyApp##001.war) 发送到了 Tomcat,并且 Tomcat 应该从文件名中检测到版本号并使用它,但您错了。 curl 仅在 URL(路径)以 / 字符结尾时发送文件名。在这种情况下,curl 实际上会将文件名附加到 URL 的末尾并使用它来联系服务器(这将不起作用)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 2016-10-29
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多