J'ai un fichier temporaire avec des données retournées dans le cadre d'une réponse SOAP via une pièce jointe binaire MTOM. Je voudrais le jeter dès que l'appel de la méthode "se termine" (c'est-à-dire, finit le transfert). Quelle est la meilleure façon pour moi de faire ça? La meilleure façon de résoudre ce problème est de les supprimer lorsque la session est détruite, mais je ne suis pas sûr qu'il existe un moyen plus "immédiat" de le faire.Tomcat 6: comment supprimer des fichiers temporaires après la fin d'un appel de méthode Web?
Pour info, je n'utilise pas Axis, j'utilise jax-ws, si cela est important. MISE À JOUR: Je ne suis pas sûr que les répondeurs comprennent vraiment le problème. Je sais comment supprimer un fichier en Java. Mon problème est le suivant:
@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;
}
}
J'aime cette solution! Mon hack était d'ajouter le fichier à une variable de session, puis de supprimer le fichier lorsque la session de l'utilisateur a expiré. J'ai aussi mis une vérification supplémentaire pour supprimer le fichier dans finalize(). –