我有一个简单的hello,我正在玩的世界servlet应用程序,并将它推送到VPS上的tomcat服务器。
当我对代码进行更改并进行部署时,tomcat不会为新发布的代码提供服务(即使再次启动服务后也是如此)。
我停止服务,然后将新的war文件推送到/ webapps /,我也确保删除旧的爆炸文件夹。
当我重新启动服务器时,它仍然可以使用较旧的代码库。
配置中是否有设置可以阻止此行为?
另外,我要删除哪些文件夹?请具体(文件夹和路径),因为我尝试删除一些并没有“得到任何地方。
答案 0 :(得分:15)
您可以删除“工作”目录。
您确定这不是浏览器缓存问题吗?
答案 1 :(得分:4)
我想补充说,如果出现非常奇怪的行为 - 你花了几个小时说WTF - 尝试手动删除/webapps/yourwebapp/WEB-INF/classes
目录。移动到另一个包的java源文件不会删除其已编译的类文件 - 至少在TC上展开的Web应用程序的情况下。这会严重地让你因不可预知的行为而疯狂,尤其是使用带注释的servlet。
答案 2 :(得分:2)
派对有点迟,这就是我的做法
./shutdown.sh
/work/Catalina/...
./startup.sh
/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上根本没有问题。尝试删除浏览器的缓存,刷新页面并查看是否有新版本的您的服务器上的页面正在显示。它与我合作。