Relatório WEB ireport
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.
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
Curtidas 0
Respostas
Davi Costa
29/11/2010
O que aparece no console do servidor? Dá algum erro?
Att Davi
Att Davi
GOSTEI 0
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
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
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();
}
}
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
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
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
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
OFF(Divulgando: https://www.devmedia.com.br/post-18574-Desmistificando-a-Certificacao-SCJP6-Parte-I.html)
Att Davi
GOSTEI 0
Dyego Carmo
29/11/2010
Realmente voce vai OU precisar de um applet OU gerar tudo em PDF mesmo :(
GOSTEI 0