我开发了一个应用程序,其中文件存储在fileserver(自定义)上。有两个Web服务相互通信。 'WebServiceA'和'WebServiceB'。在两台不同的机器上。
WebServiceB在WebServiceA的调用中存储/从fileServer获取文件。
当客户想要下载文件时,他会调用WebServiceA的方法。 WebServiceA调用WebServiceB的下载方法。我启用了MTOM和StreamingAttachment,因为我的文件非常大,有些是4KB,有些是2GB大小。 我在WebServiceB上的WebMethods步骤是 从FileServer(位于不同的计算机上)获取本地计算机上的文件。 通过将file作为参数传递,从FileDataSource创建DataHandler。 将DataHandler对象返回给WebServiceA的方法。
问题在于,在某些操作之后,WebServiceB的本地计算机存储了大量在下载操作期间创建的文件。
我试过了 1)删除WebServiceB中finally块中的文件,这导致WebServiceA上的null文件
2)创建一个临时文件。 temp = File.createTempFile(“temp”,“。txt”); temp.deleteOnExit(); 但那不会删除,因为我的webserviceB永远不会失败。
3)我无法实现WebServiceA与WebServiceB之间的“确认”或“按时间间隔删除”,因为我的经理拒绝了解决方案。
java中是否存在任何genine解决方案,它告诉我文件目前还没有被任何人使用。
我的所有机器都运行在freebsd 8.2,java6,glassfish 3.1和jaxws 2.2上。
答案 0 :(得分:0)
简单的解决方案是让批处理项目定期删除文件。