因此,我已将 Java Web 应用程序 (myapp.war) 部署到恰好在 Amazon EC2 上运行的 Tomcat 7 服务器。我注意到,当我这样做时,它会在我部署时覆盖一个名为 myapp 的类似名称的目录。我进一步意识到该应用程序实际上是从该 myapp 目录提供的,并且当我直接更改该目录中的文件时,这些更改会按预期提供给客户端。
我的问题是 Tomcat 在重新部署之间是否对这个目录做任何事情?如果我对该目录中的文件进行小幅更改,在我再次重新部署之前它会被覆盖吗?
因此,我已将 Java Web 应用程序 (myapp.war) 部署到恰好在 Amazon EC2 上运行的 Tomcat 7 服务器。我注意到,当我这样做时,它会在我部署时覆盖一个名为 myapp 的类似名称的目录。我进一步意识到该应用程序实际上是从该 myapp 目录提供的,并且当我直接更改该目录中的文件时,这些更改会按预期提供给客户端。
我的问题是 Tomcat 在重新部署之间是否对这个目录做任何事情?如果我对该目录中的文件进行小幅更改,在我再次重新部署之前它会被覆盖吗?
这取决于。
对类文件的更改可能会被忽略。
对 JSP 的更改可能会生效,具体取决于 JSP 是否已被访问以及 JSP Servlet 是否配置为检查更改。
对静态文件的更改可能会生效,但可能会因静态文件缓存的影响而延迟。通常延迟只有几秒钟,但可以配置为更长。
编辑 web.xml 可能会触发重新加载(同样可以通过配置禁用)
编辑 contex.xml 可能会触发重新部署。
重新加载会暂停应用程序,重新读取 web.xml 并取消暂停应用程序,因此用户可能会看到短暂的暂停但没有 404。redploy 完全删除旧应用程序并创建一个新应用程序。用户可能会在错误的时间尝试访问它时看到 404。
一旦部署了新的 WAR 文件,所有本地更改都将丢失。