tenho uma lista de objetos, ai gero um arquivo a partir dela. Quando vou em outra lista e peço pra gerar o arquivo de novo… aparece os objetos da antiga aff… já limpei praticamente tudo… e não acho o problema. Segue o cod:[code]InputStream is = getClass().getClassLoader().getResourceAsStream(“geraArq/gerado.txt”);
if(is!=null){
byte[] b = inputStreamToBytes(is);
ServletOutputStream out = response.getOutputStream();
response.reset();
response.setHeader("Content-Disposition", "attachment;filename=lista.txt");
response.setContentType("Application/txt");
response.setContentLength(b.length);
out.write(b);
out.flush();
out.close();
b = null;
to_file.delete();
response.flushBuffer();
is.reset();
is.close();
form = null;[/code]
1- O arquivo eu apago, logo após gerá-lo.
2- Como assim as classes usam o mesmo ClassLoader?
3-Toda vez que ele pega a lista ele gera um novo arquivo… na hora de fazer o download ele só gera certo se for a primeira vez do cara… Na segunda tentativa de gerar… não funciona, só gera o antigo.
Pode ser realmente algum cache em seu servidor, ou algo ainda mais nebuloso. Talvez alguém que conheça mais de web do que eu (e isso não é muito difícil de se achar) possa ter alguma sacada melhor.
Mas, explicando:
Alguns servidores trabalham com mais de um class loader. O classloader é a classe responsável por manter a lista de quais classes estão disponíveis para uso (quer dizer, em quais classes você pode ou não dar um new). É ele que, por exemplo, carrega um arquivo .jar e torna as classes dentro dele disponíveis.
Se você estiver com dois classloaders, com endereços relativos diferentes, o seu getResourceAsStream poderá estar retornando textos diferentes. Acho pouco provável, pois você deveria ter o mesmo arquivo nos dois endereços, mas esse é o tipo de erro que dá muita dor de cabeça as vezes.
Para imprimir o caminho gerado, para dar um System.out.println ou equivalente no que retorna a partir do getResourceAsStream.