我正在创建一个在WebContent文件夹中生成一些文件/目录的应用程序,我希望Tomcat提供这些静态文件(某些后台作业的日志)。
但是,Tomcat似乎无法识别新文件(也许是新文件夹中的文件),并且不断为它们返回404。Tomcat重新启动后,文件将正常提供。
我正在使用Eclipse内的Tomcat 7.0。这些文件由默认servlet提供。
我假设Tomcat最初以某种方式遍历WebContent,并且它只是使用此缓存的文件列表来加快操作速度。有没有一种方法可以禁用这种行为(或者也许是:为其他进程生成的新文件提供服务的正确方法是什么?)?
感谢您的帮助/建议。我是Tomcat的新手,因此我可能忽略了一些基本知识。
更新(基于公认的解决方案)
webapp文件夹中似乎存在一些双重性。一个在Eclipse项目中(由返回getServletContext().getRealPath,另一个在默认情况下在Eclipse元数据中返回,并且可以在wtp.deploy属性的launch config中看到。文件以某种方式从Eclipse复制到部署目录。当我开始生成文件时在下wtp.deploy,问题已解决。
getServletContext().getRealPath
wtp.deploy
但是,我仍然不知道如何以正确的方式解决此问题,该方法在Eclipse WTP和正常Tomcat条件下都可以使用。
更新资料
最终的解决方案是完全避免DefaultServlet。我FileServlet基于http://balusc.blogspot.com/2009/02/fileservlet- supporting-resume-and.html使用,它工作正常。
DefaultServlet
FileServlet
我在Netbeans上也有类似的经历-通常将已编译的文件放入新文件夹中并与该文件夹一起使用。不知道您是否这样;但是如果放在正确的文件夹中,文件应该可用。