Ich habe eine temporäre Datei mit Daten, die als Teil einer SOAP-Antwort über eine MTOM binäre Anlage zurückgegeben wird. Ich würde es gerne löschen, sobald der Methodenaufruf "beendet" (d. H. Die Übertragung beendet). Was ist der beste Weg für mich, dies zu tun? Der beste Weg, wie ich das herausfinden kann, ist, sie zu löschen, wenn die Sitzung zerstört wird, aber ich bin mir nicht sicher, ob es einen "unmittelbaren" Weg gibt, dies zu tun.Tomcat 6: Wie lösche ich temporäre Dateien, nachdem ein Web-Methoden-Aufruf beendet wurde?
FYI, ich benutze nicht Axis, ich benutze Jax-Ws, wenn das wichtig ist.
UPDATE: Ich bin mir nicht sicher, ob die Antworter wirklich das Problem verstehen. Ich weiß, wie man eine Datei in Java löscht. Mein Problem ist das:
@javax.jws.WebService
public class MyWebService {
...
@javax.jws.WebMethod
public MyFileResult getSomeObject() {
File mytempfile = new File("tempfile.txt");
MyFileResult result = new MyFileResult();
result.setFile(mytempfile); // sets mytempfile as MTOM attachment
// mytempfile.delete() iS WRONG
// can't delete mytempfile because it hasn't been returned to the web service client
// yet. So how do I remove it?
return result;
}
}
Ich mag diese Lösung! Mein Hack war, die Datei zu einer Sitzungsvariablen hinzuzufügen und dann die Datei zu löschen, wenn die Benutzersitzung abgelaufen ist. Ich habe auch einen zusätzlichen Check hinzugefügt, um die Datei in finalize() zu löschen. –