| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2010 10:29:28
|
bruno_cobra
JavaTeenager
Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline
|
Pessoal,
Possuo uma aplicação para geração de relatórios que está hospedada num servidor OC4J, da Oracle. Tudo funciona perfeitamente, à exceção de um relatório que demora em torno de 15 minutos para gerar (devido a sua complexidade e à quantidade de dados retornada pela consulta).
O problema com este relatório é que, após determinado tempo de processamento da requisição (em torno de 10 minutos), a página apresenta o erro "500 Internal Server Error". No entanto, o processo continua ativo e termina normalmente "por baixo dos panos". Eu posso afirmar isso pois a geração do relatório é feita através de um Servlet que grava um arquivo PDF no servidor. Ou seja, mesmo que ocorra o erro na página, o relatório acaba ficando salvo no servidor. Infelizmente, isso não me basta, pois não posso ter este erro.
Alguma ideia do que fazer? Já tentei configurar o ping como informa no seguinte link da documentação oficial (e também não funcionou): http://download.oracle.com/docs/cd/B14504_01/dl/release_notes/chap_oc4j.htm#BDCBEDDA
Qualquer ideia já será muito bem vinda. Obrigado.
Obs.: além do erro, não é gerado absolutamente em nenhum arquivo de log.
|
http://blog.brunozambiazi.com
- |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2010 11:00:12
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Não dá para fazer esse relatório asincrono? Usando OC4J você pode configurar facilmente uma fila JMS e disparar uma mensagem para um EJB processar o relatório para você. Então você pode liberar a tela e fazer um refresh a cada X segundos para ver se o relatório está pronto. Assim que o relatório estiver pronto, você mostra um link para download.
Outra sugestão, se é um relatório muito grande, você não pode criar um job no oracle para rodar na madrugada e já deixar os dados pré-populados em uma tabela? Assim toda a madrugada ou de X em X tempos você atualiza a tabela.
Normalmente uso alguns desses artificios quando há consultas muito pesadas e que não valem a pena fazer online.
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2010 11:08:28
|
bruno_cobra
JavaTeenager
Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline
|
garcia-jj, em primeiro lugar, obrigado pela resposta.
Sobre executar um job no Oracle, isso não funcionaria para o meu caso pois o relatório está disponível para mais de 100 usuários. É claro que nem todos utilizam, na verdade devem ser apenas 2 ou 3, no entanto, eu não tenho como prever quem e nem quando será feita a geração. Além disso, o relatório é populado de acordo com o usuário que gera e outros fatores que ele mesmo pode modificar apenas para gerar o relatório, entende? É uma situação bem complexa, não tem como prever.
Sobre JMS, para ser bem sincero, nunca utilizei. Gostei da ideia e é possível que funcionasse, no entanto, vou esperar um pouco mais para tentá-la pois acho um tanto complexa para a minha situação. Acredito que seja possível resolver meu problema através de alguma configuração do OC4J, mas infelizmente ainda não descobri qual.
De qualquer forma, obrigado pelas ideias.
This message was edited 1 time. Last update was at 14/07/2010 11:09:40
|
http://blog.brunozambiazi.com
- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2010 20:35:58
|
bruno_cobra
JavaTeenager
Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline
|
Ninguém mais galera?
|
http://blog.brunozambiazi.com
- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/01/2011 13:45:53
|
luisweirich
Entusiasta Java
![[Avatar]](/images/avatar/383a0eb4986607d60f4b3bfd30e57244.jpg)
Membro desde: 14/01/2009 16:21:39
Mensagens: 24
Offline
|
Oi Bruno,
Estou com o mesmo problema que você teve.
Pode postar como resolveu?
|
Luis Henrique Weirich de Matos |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/01/2011 14:04:20
|
bruno_cobra
JavaTeenager
Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline
|
Boa tarde, Luís.
Consegui resolver o problema ao alterar o parâmetro de timeout (não lembro o nome exato dele) no arquivo $ORACLE_HOME/Apache/Apache/conf/http.conf.
O valor padrão era 300, meu problema ficou resolvido quando alterei para 1200. Lembrando que após esta alteração é necessário reiniciar o servidor.
Boa sorte! Abraço
|
http://blog.brunozambiazi.com
- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/01/2011 14:07:19
|
luisweirich
Entusiasta Java
![[Avatar]](/images/avatar/383a0eb4986607d60f4b3bfd30e57244.jpg)
Membro desde: 14/01/2009 16:21:39
Mensagens: 24
Offline
|
Muito obrigado.
Foi de grande ajuda.
|
Luis Henrique Weirich de Matos |
|
|
 |
|
|