ファイルがファイルサーバーに保存される(カスタマイズされた)アプリケーションを開発しました。相互に通信する 2 つの Web サービスがあります。「WebServiceA」と「WebServiceB」。2 つの異なるマシンで。
WebServiceB は、WebServiceA の呼び出し時に fileServer に/からファイルを格納/取得します。
クライアントがファイルをダウンロードしたいとき、彼は WebServiceA のメソッドを呼び出します。WebServiceA は、WebServiceB のダウンロード メソッドを呼び出します。私のファイルは非常に大きく、一部は 4KB で、一部は最大 2GB のサイズであるため、MTOM と StreamingAttachment を有効にしました。WebServiceB の WebMethods ステップは、FileServer (別のマシン上) からローカル マシン上のファイルを取得します。file をパラメーターとして渡すことにより、FileDataSource から DataHandler を作成します。DataHandler オブジェクトを WebServiceA のメソッドに返します。
問題は、いくつかの操作の後、ダウンロード操作中に作成された多数のファイルが WebServiceB のローカル マシンに保存されることです。
1)WebServiceBの最終ブロックでファイルを削除すると、WebServiceAのファイルがnullになります
2) 一時ファイルを作成します。temp = File.createTempFile("temp", ".txt"); temp.deleteOnExit(); しかし、私の webserviceB がダウンすることはないので、それは削除されません。
3) マネージャーがソリューションを拒否したため、WebServiceA から WebServiceB への「確認」または「時間間隔での削除」を実装できません。
ファイルが現在誰にも消費されていないことを教えてくれる、Javaに存在する本物のソリューションはありますか。
私のすべてのマシンは、freebsd 8.2、java6、glassfish 3.1、および jaxws 2.2 で動作します。