2012-10-01 52 views
2

我开发了一个应用程序,其中的文件存储在fileserver(自定义)上。有两个Web服务彼此通信。 'WebServiceA'和'WebServiceB'。在两台不同的机器上。在WebService下载后删除文件

WebServiceB在WebServiceA的调用中在/从fileServer上获取/获取文件。

当客户想要下载文件时,他调用WebServiceA的方法。 WebServiceA调用WebServiceB的下载方法。我启用了MTOM和StreamingAttachment,因为我的文件相当大,有些是4KB,有些是2GB大小。 WebServiceB上的WebMethods步骤是 从FileServer(位于不同的计算机上)获取本地计算机上的文件。 通过传递文件作为参数从FileDataSource创建DataHandler。 将DataHandler对象返回给WebServiceA的方法。

问题在于,在一些操作之后,WebServiceB的本地机器存储了大量在下载操作期间创建的文件。

我试图 1)删除在最后在WebServiceB,这导致到空文件上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上。

+0

你的经理拒绝承认是可惜的:这可能是我选择的选择。 –

回答

0

简单的解决方案是有一个批量项目来定期删除文件。

+0

谢谢Hemanth尝试几乎所有的选项后,(甚至是ack)我选择在lastModified()函数的基础上删除文件。 – sailor