servlet(tomcat)中没有反映最新的更改

时间:2012-01-24 03:20:03

标签: java eclipse tomcat

我现在正处理我的安静项目,现在我正在使用tomcat和eclipse正常工作到现在为止..

我在22-1-2012部署战争(带有一些打印消息)它正常工作然后第二天我做了一些更改删除了一些消息并重新部署了文件...在我的webapps文件夹中它显示了最新的时间对于我的战争文件的'最后修改'..我做错了什么告诉我..

P.S反映了对同一项目的JSP页面的任何更改,但是servlet类没有改变

这是日志文件显示的内容 _SEVERE:Web应用程序似乎已经通过java.util.Timer API启动了名为[MySQL语句取消计时器]的TimerThread,但未能将其停止。为防止内存泄漏,计时器(以及相关联的线程)已被强制取消。 _

这是我的问题的总结,我希望我现在可以解释你的问题 我再次执行以下步骤
1.从webapps中删除我的webapp目录 2.Tried访问servlet(显示'资源不可用')
3.在print语句中进行一些更改以进行调试.4。从eclipse中重新部署的WAR
5.Again访问该servlet时它不是显示相同旧消息的最新版本。

现在告诉我是否有解决方案....  提前致谢


在尝试了很多事情之后,我刚刚观察到当我部署WAR文件时,当我在WAR中手动添加这些类文件时,非JSP servlet类文件未包含在WAR中,所有更改都会更新。所以现在可以告诉我如何在WAR中自动部署这些问题是什么问题?

10 个答案:

答案 0 :(得分:6)

JSP文件没有更新,因为它们是预编译的,即使它们可能从已更改的文件中提取信息,但每个可能受影响的JSP文件都需要对其进行微小更改,例如添加空格然后删除空格,然后保存。

然后构建您的WAR,然后显示更新。今晚我遇到了同样的问题,其他答案都没有帮助。关键是,检查部署WAR的Tomcat目录中的文件日期。我注意到即使我正在部署一个全新的已清理WAR,并删除所有文件夹,仍然有较旧的缓存文件,可能是因为Eclipse保留它们以节省编译时间,认为它们没有任何更改。

希望这有帮助

答案 1 :(得分:5)

转到Eclipse中的Servers View:

双击您的服务器。就我而言,它是Tomcat。

应弹出Tomcat Web模块。单击最底部的Modules选项卡(参见Pic1)

选择您的项目。单击“删除”按钮。

图1: enter image description here

现在你应该看到Tomcat标签旁边的一颗星星。这意味着您需要保存更改。 Control + S也是如此。

图2: enter image description here

在Project Explorer中右键单击您的项目。去Maven - >更新项目......

图3: enter image description here

现在这是重要的部分,请确保选中“强制更新快照/版本”。检查该部件至关重要。然后单击确定。

图4: enter image description here

现在看看你的服务器视图。它看起来应该是这样的,并带有“重新启动”警告,告诉您它不同步。

图5: enter image description here

右键单击它并选择“重新启动”

图6:

enter image description here

让服务器重启。现在,如果您返回到服务器视图,您应该看到它已同步。那正是你想要的。像这样:

图7: enter image description here

现在您应该能够右键单击您的项目并选择“Run As” - >在服务器上运行,您应该看到您的更改。

图8: enter image description here

如果事情仍未更新,请返回并查看您的服务器视图,并确保它没有像上面的图5中所述那样重新启动。如果是,请重新启动服务器,如图6所示。然后单击浏览器上的刷新。

答案 2 :(得分:0)

  

反映了对同一项目的JSP页面的任何更改,但servlet类未更改

目前尚不清楚你在说什么。

  • 如果您说更新的JSP位于扩展的webapp目录中,但生成/编译的JSP类没有更改(在工作目录中),请尝试从工作目录中删除这些类。您可能还需要重新启动Web容器。

  • 如果您说非JSP servlet类已更新(在webapp中)但您没有运行它们,请尝试重新启动Web容器。

  • 如果你说在webapp目录中没有更新非JSP servlet类,那么webapp部署就出现了问题。关闭Web容器,删除webapp目录(以及编译好的JSP)并重新启动webapp。


  

在尝试了很多事情之后,我刚刚观察到当我部署WAR文件时,当我在WAR中手动添加这些类文件时,非JSP servlet类文件未包含在WAR中,所有更改都会更新。所以现在可以告诉我如何在WAR中自动部署这些?问题是什么?

因此问题与部署无关。问题是您首先没有正确构建 WAR文件。

我无法解决这个问题,因为我没有使用Eclipse来构建我的WAR文件。 (我使用Maven,以便构建过程是脚本化和可重现的......并且不依赖于我每次都按正确的顺序单击右键。)

答案 3 :(得分:0)

检查Tomcat的日志文件,我打赌你的网络应用程序存在启动问题而且没有部署。

答案 4 :(得分:0)

现实情况是,Tomcat无法运行它没有副本的代码。特别是如果你重新启动它。听起来好像有一个单独的副本"您实际使用的网络应用程序。要么是你不经意做的(嘿让我们面对它,我们都做了这件事)或者是由Tomcat在你不知道的地方制作的。

选择您的网络应用中存在的唯一文件。可能是图标名称或配置文件名。搜索整个硬盘驱动器以查找WAR文件的爆炸副本。这有助于在临时目录或工作文件夹中找到它。一定要清理它们。

此外,请确保您运行的是您认为自己的Tomcat。大多数具有多个Tomcat安装的开发人员也犯了部署到不同位置的错误。查看进程列表以查看在启动时提供给JVM的参数。一定要检查环境变量,例如CATALINA_HOME。

编辑:JSP页面更改的更新,但类不会让我认为在类路径中有多个JAR文件,其中包含相同的文件(首先加载一个旧版本)或者您更改了类名称代码库,但没有更新它的引用。

答案 5 :(得分:0)

转到catalina home \ conf \ context.xml

将“更改为” 确保重启tomcat。 繁荣。 您可能仍需按两次或三次F5或Ctrl + F5。

答案 6 :(得分:0)

是你的tomcat server.xml指向正确的工作区吗?  为了确保,你去了tomcat安装目录 - 在confi文件夹中找到server.xml

答案 7 :(得分:0)

转到浏览器设置并清除缓存。

答案 8 :(得分:0)

对于每个war文件,tomcat创建一个类似的命名文件夹。删除文件夹,尝试再次重新部署战争,希望它会反映出来。

答案 9 :(得分:0)

在web.xml文件的末尾添加一个字母并将其删除,然后按Enter保存文件。之后,运行程序并使用更新的数据。