【问题标题】:Tomcat recompiling old version of JSP even after deleting work directoryTomcat在删除工作目录后重新编译旧版本的JSP
【发布时间】:2019-01-24 07:21:10
【问题描述】:

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

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

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

这很奇怪,因为 Tomcat 似乎将旧 jar 或 jsp 的缓存保存在某处,并使用该缓存重新编译 jsp,而不是使用 jar 中包含的最新版本webapp 文件夹。

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

更新:我们尝试删除 work 和 webapp 文件夹内容并重新部署整个 .WAR 文件,但 Tomcat 仍将旧版本的已编译 .JSP 文件部署到工作目录,即使 webapp 文件夹中有已部署正确版本的 JSP。似乎 Tomcat 将缓存保存在工作目录之外的其他地方......

【问题讨论】:

  • 你需要从 Tomcat 的 webapp 目录中清理你的应用程序
  • 你的意思是我需要删除整个webapp子文件夹然后重新部署整个war?

标签: java jsp tomcat caching


【解决方案1】:

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

我也会至少启动一次 tomcat 实例,而不会留下任何应用程序的痕迹,尽管这不是必需的。

【讨论】:

  • 我们不使用war的自动解压,我们在webapp文件夹中手动解压所以没有那个文件夹。问题是停止tomcat服务器,手动更新webapp文件夹中的一个jar,删除工作目录然后重启服务器并没有更新jsp的编译
  • 更新了原来的问题,仅供参考
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
相关资源
最近更新 更多