Tengo un archivo temporal con datos que se devuelven como parte de una respuesta SOAP a través de un archivo adjunto binario MTOM. Me gustaría descargarlo tan pronto como la llamada al método "finalice" (es decir, termine la transferencia). ¿Cuál es la mejor manera para que yo haga esto? La mejor forma de averiguar cómo hacerlo es borrarlos cuando se destruya la sesión, pero no estoy seguro de si hay una manera más "inmediata" de hacerlo.Tomcat 6: ¿cómo eliminar archivos temporales después de que ha finalizado una llamada al método web?
FYI, NO estoy usando Axis, estoy usando jax-ws, si eso es lo que importa.
ACTUALIZACIÓN: no estoy seguro de que los que responden realmente están entendiendo el problema. Sé cómo eliminar un archivo en Java. Mi problema es este:
@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;
}
}
¡Me gusta esta solución! Mi truco fue agregar el archivo a una variable de sesión y luego eliminar el archivo cuando la sesión del usuario expiró. También puse una verificación adicional para eliminar el archivo en finalize(). –