如何在部署新的.war文件时清除tomcat的缓存?有配置设置吗?

时间:2011-11-02 01:35:31

标签: java tomcat

我有一个简单的hello,我正在玩的世界servlet应用程序,并将它推送到VPS上的tomcat服务器。

当我对代码进行更改并进行部署时,tomcat不会为新发布的代码提供服务(即使再次启动服务后也是如此)。

我停止服务,然后将新的war文件推送到/ webapps /,我也确保删除旧的爆炸文件夹。

当我重新启动服务器时,它仍然可以使用较旧的代码库。

配置中是否有设置可以阻止此行为?

另外,我要删除哪些文件夹?请具体(文件夹和路径),因为我尝试删除一些并没有“得到任何地方。

10 个答案:

答案 0 :(得分:15)

您可以删除“工作”目录。

您确定这不是浏览器缓存问题吗?

答案 1 :(得分:4)

我想补充说,如果出现非常奇怪的行为 - 你花了几个小时说WTF - 尝试手动删除/webapps/yourwebapp/WEB-INF/classes目录。移动到另一个包的java源文件不会删除其已编译的类文件 - 至少在TC上展开的Web应用程序的情况下。这会严重地让你因不可预知的行为而疯狂,尤其是使用带注释的servlet。

答案 2 :(得分:2)

派对有点迟,这就是我的做法

  1. 从经理取消部署申请
  2. 使用./shutdown.sh
  3. 关闭tomcat
  4. 删除浏览器缓存
  5. 从webapps和/work/Catalina/...
  6. 删除应用程序
  7. 使用./startup.sh
  8. 启动tomcat
  9. 将新版本的应用程序复制到/webapps并启动它。

答案 3 :(得分:2)

我遇到了一些不能反映实际代码库的奇怪行为,所以在尝试了几个解决方案后,我的问题通过手动删除/var/cache/tomcat8/

下的所有内容得以解决

答案 4 :(得分:1)

似乎是时间戳问题。根据tomcat文档,如果有一个新的jsp或servlet,这将在工作文件夹中创建一个新的_java文件,除非_java.class文件比jsp或servlet更新。

答案 5 :(得分:1)

Tomcat还会在与ROOT相同的级别创建一个work/目录。 ROOT/也会缓存旧的东西。删除ROOT以及Catalina中的work目录。

答案 6 :(得分:1)

我是tomcat的新手,这个问题让我今天疯了。这是零星的。我请一位同事帮忙,WAR扩大了,它确实是应该的。 3当天晚些时候部署,它又恢复到原始版本。

就我而言,MySite.WAR已扩展为ROOT AND MySite。 MySite通常是送达的。但有时tomcat认为它更喜欢ROOT,所有的变化都消失了。

“解决方案”是在每次部署战争时删除ROOT网站。

答案 7 :(得分:0)

听起来你的类加载器在更新后没有加载servlet类。如果您更改web.xml文件,这可能会修复,该文件应提示服务器/容器重新部署并重新加载servlet类。 我想在web.xml的末尾添加一个空行并保存它,然后看看是否修复了它。正如我所说,这可能会解决它,也可能不会。

祝你好运!

答案 8 :(得分:0)

我把我的war文件放在<ul> <li ng-repeat="(markerid,marker) in markers" ng-if="marker.added">{{marker.options.name}}</li> </ul> 上的时间不错,但实际路径是/etc/tomcat7/webapps。您是否希望使用/var/lib/tomcat7/webapps来了解它的位置。

并删除此文件夹sudo find / -type f -name "my-war-file.war"/tmp/hsperfdata_*

答案 9 :(得分:0)

我有两次同样的问题,但在第二次我意识到它在Tomcat上根本没有问题。尝试删除浏览器的缓存,刷新页面并查看是否有新版本的您的服务器上的页面正在显示。它与我合作。