问题发生的直观描述:在用户用Bootstarp Fileinput通过异步的方式上传多张图片文件至ftp时出现文件有的成功,有的失败。完全随机的。
debug结论:在FtpClient.storeFile()时报connect is not open 的IO异常有的还有connect closed when copying.
出现的原因:Fileinput会同时请求后端的upload接口,然而FtpUtil里面将FtpClient和上传的方法全都写成static了,可能是当时为了方便直接调方法 而不用new对象。这样又节约内存?这时就发生了并发情况下出现的一系列问题。
解决办法:1将上传文件的方法加synchronized。最简单的但肯定不好的
2将FTPClient静态或者不共用