Tomcat在请求完成时删除文件



我遇到了一个非常奇怪的问题。我使用commons-fileupload(1.2.1)来处理我的网络应用程序中的文件上传(托管在tomcat 7.0.23中,并且设置了distributable标志)。一旦我从DiskFileItemFactory(没有FileCleaningTracker)获得DiskFileItem实例,我就使用它的write方法来存储文件(在DiskFileItemFactory配置为使用的同一目录中,以防它需要在流式传输时将文件写入磁盘)。问题是,这个新文件(由我明确创建并命名)在请求完成处理后被删除。正如你所能想象的,当我需要再次访问该文件时,这是有问题的。

看似相关的小消息:

  • 有问题的目录不是servlet上下文中的默认临时目录,也不在Tomcat目录下
  • 在另一个代码路径中,我立即复制该文件(而不是在其他请求中),并且副本不会被删除
  • 即使我在请求完成之前chmod a-w文件,当请求完成时,它仍然会被删除

谢谢你的帮助。

罪魁祸首是谁?9年多前的一种零散的finalize方法正在进行"清理"。

最新更新