Axis と Apache Tomcat 7 を使用して Web サービスを作成しています。このサービスは、サード パーティのライブラリを使用してファイルへの変換を行い、最終的により多くのファイル (サブフォルダーと通常のファイル) を含むフォルダーを作成します。変換が完了すると、サービスは zip アーカイブを作成して返します。新しいリクエストを受け取ると、まず、最後のリクエストで作成されたファイルを削除し、リクエストの処理を開始します。
サービス自体は正常に動作し、少なくとも最初の要求は満たされます。問題は、2 番目の要求を受信したときに、最後の要求で生成されたすべてのファイルをサービスが削除できないことです。私は Windows XP を使用しており、Process Explorer を使用すると、Tomcat がいくつかのファイル (すべてではありません) を開いたままにしていることがわかります。そのため、それを削除できません。
私が使用しているライブラリは、サービス操作が終了してもファイルを開いたままにする可能性はありますか? zip アーカイブの作成に使用するコードでは、開いているすべてのストリームを閉じているようです。ところで、それらを閉じることを許しても、サービス操作がクライアントに結果を返した後も開いたままにすることはできますか? もしそうなら、Tomcat プロセスが一部のファイルしか開いていないのはなぜですか?
しばらくすると一部のファイルが「解放」されたようですが、他のファイルは常に開いたままになっています...
誰かがこの状況に対処する方法についてアドバイスをくれることを願っています:)