记Tomcat删除war包问题

由于不清楚tomcat部署原理,误认为tomcat部署完成之后,可以把war删除,然后以后每次部署,只需要增量部署就行了,然后还怕由于war包的存在,增量部署的内容会被覆盖掉,不清楚war包什么时候会自动重新部署。

于是,,rm -rf mm.war---尴尬了。。删除war包之后,发现解压的项目目录都顺带不见了。。。

于是赶紧查询资料:

纠正自己的错误思想:

1、tomcat全量部署完成之后,确实可以删除war包。但是要注意,千万不要再项目运行过程中删除war包。正确的姿势是:先停止服务,然后删除war包,重新启动。

原因:tomcat在项目运行过程中,会检测war包的情况,如果发现war包更改了,那么就会同步把war包的变化应用到项目目录中,你删了war包,自然项目解压目录也就随之消除。。。

因为tomcat在运行期, 会实时监控webapps目录下的war文件,如果有新增的war,就去解压它; 有删除war,就连同项目一起删除 .

 

2、如果项目解压目录和war包同时存在,增量更改目录里的文件,会被war包覆盖吗?

不会,除非你更新了war包。tomcat在项目运行的过程中,会执行解压目录下的项目。

  • 当你重新部署的时候,如果有与war文件相同的文件夹,就不会重新部署。

当tomcat启动时候,会去查看webapps目录下的所有war包,同时查看是否有该war包对应的,已解压的同名文件夹,
如果已经存在,就不会再解压,也不会覆盖该工程下已经被修改过的文件.
只有当你删除war包对应的同名文件夹(即 你的工程 )后,启动tomcat时才会再进行解压war文件动作

 

tomcat启动的时候,才会进行war的重新解压。但是前提是,webapps下没有war的同名文件夹,如果已经存在,那么及时重启tomcat也不会重新解压。

将war包拷贝到tomcat  webapps目录下时,如果不存在同名工程,则启动tomcat时会解压war包,从而生成一同名工程。

然而,如果webapps下已经存在与war包同名的工程目录,则即使重启tomcat,也不会重新解压此war包,也就是说,运行的仍是之前同名工程目录下的代码,而不是war包中的新代码。

   

基于这种现状,采用了以下方式:

copy target\*.war D:\java_tools\tomcat6\webapps\

cd D:\java_tools\tomcat6\webapps

for %%a in (*.war) do rd /q /s "%%~na"

call D:\java_tools\tomcat6\bin\startup.bat

   

其主要思路是:

将war包拷贝到webapps目录下,遍历所有war包,删除掉webapps目录下与war包同名的工程目录,然后重启tomcat,则会将war包重新解压,这样每次tomcat上部署的都会是最新的代码。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值