WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
Tomcat 4.版本已经集成了webdav,因此目前使用的tomcat,只需要在web.xml中配置下,就可以使用webdav的功能,这里要说的问题其实跟webdav无关,只是系统中使用了webdav进行文件上传,顺带说明下。
问题是这样的:
系统有个文件上传功能,如上所言,这个上传功能是用webdav实现的,文件上传后,系统有另外一个线程对上传文件进行扫描解析,而扫描解析时会对文件进行改名。接着问题来了,解析时偶尔出现文件解析失败的错误,而这时将文件拿回来重解析,是正常的(不用考虑解析逻辑或文件内容的正确性,这里不是说这样的问题)。
排查的结果很诧异,刚才说了解析时会改文件名,排查时发现改了名后的文件大小还在增加
tomcat webdav文件上传读写冲突问题
最新推荐文章于 2022-11-12 14:39:15 发布
本文探讨了在Tomcat中使用WebDAV进行文件上传时遇到的并发问题。当一个线程正在上传文件时,另一线程尝试改名并解析文件,导致解析失败。在Windows系统中,文件改名操作无法进行,但在Linux环境下,文件可以被改名并并发写入。问题涉及到操作系统对文件占用的不同处理方式,以及Linux的文件锁机制,包括建议锁和强制锁。文章引用了相关测试结果和参考资料,揭示了不同操作系统下文件处理的差异。
摘要由CSDN通过智能技术生成