Boa noite,
estou com um probleminha que nao sei como resolver. Tenho um sistema com JPA/Hibernate que permite o envio (upload) de arquivos. O upload ocorre perfeitamente, mas na hora de fazer o download desses arquivos o sistema demora muito tempo para trazê-los para memória e então iniciar o download. Para um arquivo de 2mb ele esta demorando de 15 a 20 segundos carregando antes de iniciar o download propriamente dito.
Abaixo estão as classes da Entidade (que representa o arquivo) e o servlet que escreve o arquivo no outputstream.
[code]@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Arquivo implements Serializable {
@TableGenerator(name=“arquivo_geradorid”, table=“arquivo_geradorid”, allocationSize=1)
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator=“arquivo_geradorid”)
private Long id;
private String nome;
private String enctype;
private String extensao;
@Column(length=33554432)
private byte[] arquivo;
… getters and setters
}[/code]
[code]public class Arqs extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter(“id”);
Arquivo arq = ArquivoJPA.recuperar(Long.parseLong(id));
System.out.println(arq.getId());
System.out.println(arq.getNome());
System.out.println(arq.getEnctype());
response.setContentType(arq.getEnctype());
response.setHeader("Content-Disposition", "attachment; filename=\"" + arq.getNome() + "\"");
response.getOutputStream().write(arq.getArquivo());
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}[/code]
Alguem saberia como eu poderia tornar esse download mais rapido?
Desde já obrigado,
Bruno Krebs.