0%

Java:Tomcat的部署实例之资源目录

原帖收藏于IT老兵博客

Tomcat上部署应用后,原本目录是否会被移除。

实例:
一个项目的资源放在了WebContent下面,这样每次打包,都会将这些文件打包进去,这样在打包时,导致打出来的war包有好几百兆,这样上传Git也非常不方便。

方案1:
分析:如果删除掉本地WebContent下的资源文件,再部署到服务器上,war包其实是一个压缩包,加压后覆盖原本目录下的相同内容,因为新上传的war包没有相同的资源文件,这样就不会覆盖原本的资源文件。
结果:加压后的项目目录也不存在资源文件了,看来这个部署过程,是会删掉原本的项目目录的。

方案2:
分析:因为webapps是web服务根目录,那么把资源文件从项目目录移到webapps下面,这样应该也可以被访问到。
结果:成功,可以被访问到。

为了验证这个,上网查了很多帖子,众说纷纭,最后还是在官网找到这么一段话:

The following deployment sequence will occur on Tomcat startup in that case:

  1. Any Context Descriptors will be deployed first.
  2. Exploded web applications not referenced by any Context Descriptor will then be deployed. If they have an associated .WAR file in the appBase and it is newer than the exploded web application, the exploded directory will be removed and the webapp will be redeployed from the .WAR
  3. .WAR files will be deployed

注意这里the exploded directory will be removed and the webapp will be redeployed from the .WAR,原本的解压目录会被移除,应用会被重新从war文件中部署。

寻根究底,而不人云亦云,这样才是端正的学习的态度。