【发布时间】:2012-10-01 12:05:25
【问题描述】:
我开发了一个应用程序,其中文件存储在文件服务器上(自定义)。有两个 Web 服务相互通信。 “WebServiceA”和“WebServiceB”。在两台不同的机器上。
WebServiceB 在调用 WebServiceA 时在 fileServer 上/从 fileServer 上存储/获取文件。
当客户端想要下载文件时,他调用WebServiceA 的方法。 WebServiceA 调用 WebServiceB 的下载方法。我启用了 MTOM 和 StreamingAttachment,因为我的文件很大,有些是 4KB,有些是 2GB。 我在 WebServiceB 上的 WebMethods 步骤是 从 FileServer(在不同的机器上)获取本地机器上的文件。 通过将文件作为参数传递,从 FileDataSource 创建 DataHandler。 将 DataHandler 对象返回给 WebServiceA 的方法。
问题是,经过一些操作,WebServiceB 的本地机器存储了大量在下载操作期间创建的文件。
我试过了 1)删除WebServiceB的finally块中的文件,导致WebServiceA上的文件为空
2) 创建一个临时文件。 temp = File.createTempFile("temp", ".txt"); temp.deleteOnExit(); 但这不会删除,因为我的 webserviceB 永远不会关闭。
3) 我无法在 WebServiceA 到 WebServiceB 之间实现“确认”或“按时间间隔删除”,因为我的经理拒绝了该解决方案。
java 中是否存在任何 genine 解决方案,告诉我文件目前没有被任何人使用。
我所有的机器都在 freebsd 8.2、java6、glassfish 3.1 和 jaxws 2.2 上运行。
【问题讨论】:
-
很遗憾你的经理拒绝承认:这可能是我的选择。
标签: java web-services jax-ws