Tomcat 即使在删除工作目录后也会重新编译旧版本的 JSP



在过去的几天里,我注意到一个奇怪的Tomcat行为:

当我更新远程 Tomcat 服务器目录中相关 webapp 文件夹中的 JAR 文件时,工作目录中由 Tomcat 编译的嵌入式 JSP 文件的相应.class和.java文件不会更新。

因此,我尝试停止Tomcat,删除整个工作目录,然后重新启动它,但它仍然重新编译旧版本的jsp文件。

这很奇怪,因为看起来好像 Tomcat 将旧 jar 或 jsp 的缓存存储在某个地方,并且它使用该缓存来重新编译 jsp,而不是使用 webapp 文件夹中包含的 jar 中的最新版本。

我发现使其工作的唯一方法是手动将工作目录中的编译版本替换为我的机器中本地生成的版本,但这是一种黑客,我需要了解它是如何工作的以及它在哪里保留对旧版本的引用文件。你有什么线索吗?

更新:我们尝试删除工作和 Web 应用文件夹内容并重新部署整个 .WAR 文件,但雄猫仍然将编译的旧版本部署到工作目录。JSP 文件,即使在 Web 应用程序文件夹中部署了正确版本的 JSP。似乎雄猫在工作目录之外的其他地方保留了缓存......

在Tomcat的webapp文件夹中,你可能会找到一个文件your_app.jar/war和一个同名的文件夹,为了完成更新Tomcat的缓存/安装,你必须首先删除这两个(及其相关的工作文件/文件夹(,然后再次安装你的应用程序jar/war。

我也会至少启动一次 tomcat 实例,而不会跟踪应用程序,尽管它不是必需的。

最新更新