Estouro (aparente) de Buffer no JasperReports  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
MarcioTavares
Virtual Machine Man
[Avatar]

Membro desde: 09/11/2002 19:33:28
Mensagens: 738
Localização: Rio de Janeiro
Offline

Fala galera,

Estou tendo problemas na geração de um relatório, que aparentemente tem a ver com o tamanho do stream passado para o JasperReports.

Minha aplicação geradora roda sob Tomcat, cria o stream (na maioria das vezes é em Html) em tempo real e gera o report via ServletOutputStream e JRExporter. Esse report não dá erro sempre. Depende da quantidade de parâmetros passados para ele. Um dos parâmetros determinantes para o tamanho do report (e do stream) são os estados do país. Na maioria das vezes um estado gera pelo menos 2 páginas de relatório, ou seja, 27 estados gerarão no mínimo 54 páginas. Quando eu escolho poucos estados o report é gerado com sucesso, perfeito. O erro só acontece de fato quando o número de estados é próximo a 27. Segue um pedaço da pilha de erro:



Chegaram a sugerir que isso poderia estar sendo causado por um possível fechamento do socket devido a algum timeout, porque a query sql demora um tempo considerável para rodar. Mas eu verifiquei que o problema não é esse, porque tenho um outro report que demora, dependendo dos parâmetros passados para a query, 10 minutos para rodar, mas não é tão grande quanto esse. Muito mais tempo do que o report problemático.

Já verifiquei tudo o que estava ao meu alcance, e do que eu poderia desconfiar, mas não consegui nem chegar perto de uma solução. Alguém tem alguma idéia do que possa estar acontecendo? Se é algum tipo de estouro de buffer no JasperReports, no ServletOutputStream ou alguma outra coisa?


Grande abraço a todos.

- Galera do RJ precisa prestigiar os eventos de Java!!

- Sou a favor da extinção do Cobol da face da Terra!
[Email] [MSN]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

10 minutos cara? Certeza?

A requisição http não dá timeout?

This message was edited 1 time. Last update was at 28/07/2005 18:37:46


Former LIPE.
[ICQ]
MarcioTavares
Virtual Machine Man
[Avatar]

Membro desde: 09/11/2002 19:33:28
Mensagens: 738
Localização: Rio de Janeiro
Offline

Sim, tenho certeza. Às vezes é até mais do que isso.

[editado]

Bom, desculpem, na verdade o que demora mais de 10 minutos é a execução da query sql.

This message was edited 2 times. Last update was at 28/07/2005 18:42:29


- Galera do RJ precisa prestigiar os eventos de Java!!

- Sou a favor da extinção do Cobol da face da Terra!
[Email] [MSN]
furetz
Entusiasta Java
[Avatar]

Membro desde: 19/11/2004 21:32:22
Mensagens: 20
Offline

Eu tive um problema com timeout uma vez.
A query sql demorava, às vezes, mais que 40 minutos.

Para resolver isso eu fiz uma gambiarra, quando vou iniciar o processamento do relatório eu seto a timeout daquela sessão para 0, depois quando termina a query eu volto o timeout para o tempo que estava.

" Mataro meu passarinho!!!!

...Pega eles Tupi!!!!!!! "

Get Firefox!
[MSN] [ICQ]
MarcioTavares
Virtual Machine Man
[Avatar]

Membro desde: 09/11/2002 19:33:28
Mensagens: 738
Localização: Rio de Janeiro
Offline

O problema é que o que parece estar causando o erro é o tamanho da saída gerada. O problema não é com tempo.

- Galera do RJ precisa prestigiar os eventos de Java!!

- Sou a favor da extinção do Cobol da face da Terra!
[Email] [MSN]
MarcioTavares
Virtual Machine Man
[Avatar]

Membro desde: 09/11/2002 19:33:28
Mensagens: 738
Localização: Rio de Janeiro
Offline

Descobri o que era: estouro do heap space da VM. Coloquei o Tomcat pra iniciar com 128MB e o treco rodou.

É isso aí, vivendo e aprendendo.

- Galera do RJ precisa prestigiar os eventos de Java!!

- Sou a favor da extinção do Cobol da face da Terra!
[Email] [MSN]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Cuidado para não deixar 10 clientes fazerem a mesma requisição ao mesmo tempo @.@

Former LIPE.
[ICQ]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team