Relatório WEB ireport

Java

29/11/2010

Bom dia. O Assunto é Relatório WEB Já criamos relatórios, porém só conseguimos executá-lo na máquina local,
não estamos conseguindo executá-lo no servidor estamos utilizando
servidor - Windows 2003 server
jsf, rich faces
ireport 3.7
eclipse galileo No que puderem nos ajudar ficaremos gratos. Atenciosamente,
Ricardo Barcelos.
Barcelos.java

Barcelos.java

Curtidas 0

Respostas

Davi Costa

Davi Costa

29/11/2010

O que aparece no console do servidor? Dá algum erro?

Att Davi
GOSTEI 0
Davi Costa

Davi Costa

29/11/2010

Estava lembrando aqui que já passei por um problema parecido.
E tive que alterar um pouco meu código:

/*//envia a resposta com o MIME Type
        if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.ACROBAT_PDF)){
            response.setContentType("application/pdf");
        }else if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.PAGINA_HTML)){
            response.setContentType("application/html");
        }
        */
        response.setHeader("Content-Disposition", "attachment; filename="+ nomeRel +".pdf");
        response.setContentType("application/download");
        response.setHeader("Pragma", "no-cache");

Como pode perceber a parte que está comentada tb só estava funcionando local , quando alterei para a parte mais em destaque em azul funcionou.. dá uma olhada no seu código.

Att Davi
GOSTEI 0
Barcelos.java

Barcelos.java

29/11/2010

O meu código está assim:   private void exibirRelatorio(String nmArquivo, Object objVo, Connection con, Map parameters) { 
  JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource((Collection) objVo);   String arquivo = JSFUtil.getPathRelatorios(nmArquivo);
  File reportFile = new File(arquivo);
  byte[] bytes = null;
  try {
   if (objVo != null)
    bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),parameters, ds);
   else
    bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),parameters, con);
   
   HttpServletResponse response = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();  
         if (bytes != null && bytes.length > 0) {  
             ServletOutputStream ouputStream = null;  
                response.setContentType("application/pdf");  
                response.setContentLength(bytes.length);  
                ouputStream = response.getOutputStream();  
                ouputStream.write(bytes, 0, bytes.length);  
                ouputStream.flush();  
                ouputStream.close();  
                FacesContext.getCurrentInstance().responseComplete();  
         }
  } catch (JRException e) {
   e.printStackTrace();
  } catch (IOException ex) {  
            ex.printStackTrace();  
        }
    } 
GOSTEI 0
Davi Costa

Davi Costa

29/11/2010

Deixa seu método assim e pasa o feedBack se funcionou no servidor,mais uma dica  evita esse if (que destaquei em verde) será que não é melhor sobrecarregar esse método, vai ganhar em performance apesar de ser muito pouco, mas é de pouquim que deixamos nossa aplicação mais performática e fazemos a diferença. Deixa um método esperando o Object e outro esperando a Connection , rapidim vc refatora isso :


private void exibirRelatorio(String nmArquivo, Object objVo, Connection con, Map parameters) { 
  JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource((Collection) objVo);   String arquivo = JSFUtil.getPathRelatorios(nmArquivo);
  File reportFile = new File(arquivo);
  byte[] bytes = null;
  try {
   if (objVo != null)
    bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),parameters, ds);
   else
    bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),parameters, con);
   
   HttpServletResponse response = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();  
         if (bytes != null && bytes.length > 0) {  
             ServletOutputStream ouputStream = null;  
                response.setHeader("Content-Disposition", "attachment; filename="+ nomeRel +".pdf");
        response.setContentType("application/download");
        response.setHeader("Pragma", "no-cache");
               // response.setContentType("application/pdf");  
                response.setContentLength(bytes.length);  
                ouputStream = response.getOutputStream();  
                ouputStream.write(bytes, 0, bytes.length);  
                ouputStream.flush();  
                ouputStream.close();  
                FacesContext.getCurrentInstance().responseComplete();  
         }
  } catch (JRException e) {
   e.printStackTrace();
  } catch (IOException ex) {  
            ex.printStackTrace();  
        }
    } 


Att Davi
GOSTEI 0
Davi Costa

Davi Costa

29/11/2010

E ai deu certo? Passa o feedBack?

OFF(Divulgando: https://www.devmedia.com.br/post-18574-Desmistificando-a-Certificacao-SCJP6-Parte-I.html)

Att Davi
GOSTEI 0
Dyego Carmo

Dyego Carmo

29/11/2010

Realmente voce vai OU precisar de um applet OU gerar tudo em PDF mesmo :(

GOSTEI 0
POSTAR