[RESOLVIDO] Problema Glassfish - getOutputStream() already been called

Fala ae pessoal.
Estou desenvolvendo um pequeno sistema para geração de um relatório. Faço uso de iReport, Primefaces, JSF2.0 e usando como servidor o Glassfish 3.1.2

Quando o usuário terminar o preenchimento, tenho um botão para download do arquivo PDF que o sistema vai gerar dinamicamente.
No ambiente de desenvolvimento o sistema sobe, funciona perfeitamente, gera o relatório bonitinho.
No ambiente de produção, faço o deploy da aplicação e no momento do usuário fazer o download do arquivo dá o erro acima citado.

Meu método no ManagedBean que retorna o relatório é:

[code]public StreamedContent downloadReportPdf() {
logger.debug(“GERAR RELATORIO PDF”);

    InputStream stream = ReportService.getInstance().emiteRelatorioDeca(listaInformacoes, ReportService.AUTONOMO_SEM_ESTABELECIMENTO, ReportService.FORMATO_PDF);
    StreamedContent file = new DefaultStreamedContent(stream, "application/pdf", "formSemEstab.pdf");
    return file;
}[/code]

E no xhtml o meu download é feito assim:

<p:commandButton id="downloadlinkPdf2" title="Download PDF" value="Download DECA" ajax="false" icon="ui-icon-down" rendered="false"> <p:fileDownload value="#{aseMB.downloadReportPdf()}" /> </p:commandButton>

Meu managed bean é view scoped e ressalto que, no ambiente de desenvolvimento, Glassfish e Netbeans funciona perfeitamente.

Alguma sugestão? Desde já, agradeço por qualquer ajuda!

tente duas coisas:

passa a mb para requestScope

ou

coloque o metodo que gera o relatorio no action do command button

depois coloque o resultado pra mim saber.

[]'s

Passando o ManagedBean para requestScoped, mesmo erro ocorreu.

Passando a chamada do método para o action do botão, dá erro devido ao retorno do método passar um StreamedContent.

expliquei mal, vou melhorar

crie um metodo que carregue o arquivo, crie tambem uma variavel do tipo StreamedContent e crie um get para ela.
no metodo vc vai carregar o arquivo e popular a variavel StreamedContent.
o metodo sera disparado pelo action do command button e o fileDownload vai apontar para a variavel
o retorno do metodo vai ser void.

[]'s

Olá Maurício,

Tentei conforme vc explicou, semelhante ao modelo exemplo do primefaces onde ele cria o get e set para o objeto. Não funcionou o download porém não deu erro nenhum no log.
Outro método que eu tenho em minha aplicação, pega o relatório que foi gerado e abre ele em nova tela, porém ocorre o mesmo erro do getOutputStream() already called.

O que mais me deixa intrigado é o fato de no meu ambiente ele funcionar sem erro nenhum. Pensei até que poderia ser algum problema de permissão em alguma pasta no servidor (rodando em linux), mas já descartei a idéia.

Pessoal, depois de quebrar muito a cabeça consegui resolver o problema.
Assim como grande parte dos problemas grandes, tomou muito tempo mas era de simples solução.

Revirei o log do Glassfish e o problema era no endereço do subreport.
Estava pegando o path da minha máquina, ao invés de pegar o path do servidor.

Foi só alterar o Default Value Expression do parâmetro SUBREPORT_DIR.

Nisso, inúmeras outras exceptions eram disparadas.
Obrigado pela ajuda!