将战争部署到tomcat

kra*_*ver 14 java deployment tomcat

在过去10年左右的时间里,我有机会无数次地将Web应用程序部署到tomcat中.我还写了几个脚本试图自动执行,但从未设法完全自动化它.

这是问题所在.我正在尝试部署一个新的战争,与我的tomcat的webapps中的现有战争同名.

选项1:天真的方法 - 只需复制战争并等待它更新爆炸目录.这有时是有效的.很多时候 - 爆炸目录在合理的时间内没有更新.
选项2:直通方法 - 停止tomcat,删除所有战争和临时文件.复制战争并启动tomcat.这通常涉及停止tomcat,等待一段时间 - 然后检查进程是否仍然存在并将其杀死.
选项3:手动方法 - 这可能是令人惊讶的,但我发现它可以工作很多次 - 复制战争,等待爆炸目录更新,一旦它 - 重新启动tomcat.如果没有 - 您可以尝试删除临时工作文件,这有时会有所帮助.

我也尝试了很多选项 - 使用不同的顺序和动作的子集 - 重启,停止,删除战争,删除爆炸,删除localhost上下文,删除localhost工作目录,复制战争,睡眠,比较日期,请求tomcat礼貌地重新加载,等等似乎什么都没有效果.

这可能是我做错了,但我听到了很多人的相同经历,所以我在这里得到一些建议 - 你说什么?将新战争部署到tomcat的最佳方法是什么?

谢谢!

sys*_*ern 11

您可以使用curl在shell脚本中轻松自动执行此操作

在tomcat 6:

curl --upload-file deployme.war "http://tomcat:s3cret@localhost:8088/manager/deploy?path=/deployme&update=true"
Run Code Online (Sandbox Code Playgroud)

在tomcat 7上

curl -T "deployme.war" "http://tomcat:s3cret@localhost:8080/manager/text/deploy?path=/deployme&update=true"
Run Code Online (Sandbox Code Playgroud)

或通过几乎任何porgramming语言.我在这里发布了基于java的解决方案


Gle*_*enn 9

我倾向于选择2.如果有一个项目我在ide中工作,特别是附加了调试器,我发现事情最终开始搞砸了.可能会追逐一只红鲱鱼一小时才能发现清除所有东西会让问题消失.然后很高兴有一个脚本,我可以偶尔启动以清除一切:

  • 关机时间超过60秒
  • 清除日志,临时,工作目录
  • 清除webapp文件夹
  • 从构建位置复制新的war文件
  • 爆炸新的战争档案
  • 如有必要,运行一个awk脚本来定制属性文件中的机器特定值(因此之前的爆​​炸)
  • 使用CATALINA_PID环境变量设置启动(以启用关闭力)

通常事情很好地关闭.如果没有,那么通常会有一个后台线程启动但缺少一个关闭钩子(比如一个memecached客户端)并且需要被追捕.通常情况下,刚刚参加新战争似乎有效.但是如果在开发环境中,执行完全重启的脚本很不错.


Ton*_*nis 0

我只是使用Tomcat管理工具停止该进程,将其删除,然后安装新的WAR。十分简单。