2012-10-01 111 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