Outra alternativa também pra testar se melhora é a seguinta
*RegistroBean registroBean;*
StringBuilder sb=newStringBuilder();
*PrintWriter printWriter = new PrintWriter(response.getWriter(), false);*
*BufferedWriter bw = new BufferedWriter(printWriter);*
*
for(Iterator it = listaX.iterator(); it.hasNext();) {
registroBean = (RegistroBean) it.next();
sb.append(Dado 1);
sb.append(";");
sb.append(Dado 2);
sb.append(";");
bw.write(sb.toString());
bw.newline();
}
fallow
Em 6 de julho de 2011 18:13, Claudio Emanuel Weiler
<cweiler@tre-pr.gov.br>escreveu:
> **
>
>
> Olá Leonardo,
>
> O seu problema é tempo de processamento que sempre irá gerar timeout.
>
> Como a escrita é do tipo texto, você pode tentar realizar o envio de dados
> direto, ao invés de buffer.
> >>> response.getWriter().write("dados"); <<<
> Desta maneira o servidor vai servindo o navegador que não irá dar timeout.
>
> Outra opção seria a criação de um mecanismo de geração de relatório, em que
> o usuário seria informado do progresso, com refreshs na página, e o
> relatório somente seria enviado ao final do processamento. Mas esta opção
> já
> é um pouco mais complicada, você deve achar alguns exemplos na internet.
>
> Belezs!!
>
> Claudio Weiler
> http://claudioweiler.blogspot.com/
>
> -----Mensagem original-----
> De: java-br@yahoogrupos.com.br [mailto:java-br@yahoogrupos.com.br] Em nome
> de Leonardo Nardi
> Enviada em: quarta-feira, 6 de julho de 2011 16:11
> Para: java-br
> Assunto: [java-br] Otimizar geração de arquivo CSV
>
> Olá a todos do grupo!
>
> Estou enfrentando um problema no momento em que estou gerando um arquivo
> CSV. O que acontece é que, para uma determinada consulta, há o retorno de
> 11353 registros do BD. Isto está demorando muito no instante da chamada do
> método que varre a lista com estes registros(11353) e vai gerando o
> arquivo.
> No final dá timeout, dando erro 404 na tela e não gera o arquivo. Para
> gerá-lo estou criando o seguinte objeto:
>
> *RegistroBean registroBean;*
> *PrintWriter printWriter = new PrintWriter(response.getWriter(), false);*
> *BufferedWriter bw = new BufferedWriter(printWriter);*
> *
> for(Iterator it = listaX.iterator(); it.hasNext();) {
> registroBean = (RegistroBean) it.next();
> *
> bw.write("Dado 1");
> bw.write(';');
> bw.write("Dado 2");
> bw.write(';');
>
> Gostaria de saber o que posso fazer para otimizá-lo?
>
> Desde já, antecipadamente, agradeço a atenção dispensada.
>
> Leonardo Nardi
>
> "Quando plantardes para um ano, semeai grão. Quando plantardes para uma
> década, plantai árvores. Quando plantardes para uma vida, educai o homem.
> Se
> derdes ao homem um peixe, ele se alimentará uma vez. Se lhe ensinardes a
> pescar, ele se alimentará a vida inteira."
> Autor: Kuan Tzu - III Século a.c.
>
> "A ciência sem religião é aleijada;
> a religião sem ciência é cega."
> Autor: Albert Einstein
>
> --------
> A Visão do TRE-PR é ser reconhecido como instituição pública de excelência,
> indispensável para o aperfeiçoamento da democracia.
> Todos os eleitores de Curitiba deverão fazer seu recadastramento
> biométrico. Maiores informações em nosso site: www.tre-pr.jus.br
>
>
--
Paulo Roberto de A.S. Leite
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-brLinks do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/java-br/
<*> Para sair deste grupo, envie um e-mail para:
java-br-unsubscribe@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html







0 comentários:
Postar um comentário