Lentidao ao carregar arquivos da base de dados

1 resposta
B

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.

@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
}
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);
    }
}

Alguem saberia como eu poderia tornar esse download mais rapido?

Desde já obrigado,
Bruno Krebs.

1 Resposta

B

Fico me perguntando se essa é uma pergunta idiota ou se ninguém sabe a resposta. Pois é o segundo fórum que eu a posto e ninguém da um piu…

Criado 5 de maio de 2010
Ultima resposta 6 de mai. de 2010
Respostas 1
Participantes 1