Boa tarde a todos.
Estou com um problema com iReport no momento q mando gerar um relatorio PDF através de um arquivo .jasper.
vejam a classe abaixo:
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletContext;
import model.DepartamentoDAO;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.*;
import net.sf.jasperreports.view.JasperViewer;
public class RelatorioDepartamento {
private Integer codDepto;
private String nomeDepto;
private static List <Departamento> listDepto;
public static void execute(ServletContext sc, HttpServletRequest request, HttpServletResponse response) {
try {
List <RelatorioEmpregadoDepartamento> listRelEmpDep = new ArrayList<RelatorioEmpregadoDepartamento>();
listDepto = DepartamentoDAO.getAll();
for(int i=0; i < listDepto.size(); i++){
RelatorioEmpregadoDepartamento relDepto = new RelatorioEmpregadoDepartamento();
relDepto.setCodDepto(listDepto.get(i).getCodDepartamento());
relDepto.setNomeDepto(listDepto.get(i).getNomeDepartamento());
listRelEmpDep.add(relDepto);
}
JRDataSource jrds = new JRBeanCollectionDataSource(listRelEmpDep);
// parametros do relatorio
HashMap parameters = new HashMap();
// lendo arquivo jasper
File reportFile = new File(sc.getRealPath("/rel/teste.jasper"));
String fileName ="teste";
byte[] bytes = null;
try {
//bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, Conexao.getConnection());
//bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, jrds);
JasperPrint print = JasperFillManager.fillReport(reportFile.getPath(), parameters, jrds);
bytes = JasperExportManager.exportReportToPdf(print); //demora um pouco e ocorre
//a exceção mencionada no assunto
//antes mesmo de eu mandar imprimir
//através do e.printStackTrace();
JasperViewer.viewReport( fileName + ".pdf", false );
} catch (JRException e) {
e.printStackTrace();
return;
}
//
if (bytes != null && bytes.length > 0) {
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public List<Departamento> getListDepto() {
return listDepto;
}
public void setListDepto(List<Departamento> listDepto) {
this.listDepto = listDepto;
}
public Integer getCodDepto() {
return codDepto;
}
public void setCodDepto(Integer codDepto) {
this.codDepto = codDepto;
}
public String getNomeDepto() {
return nomeDepto;
}
public void setNomeDepto(String nomeDepto) {
this.nomeDepto = nomeDepto;
}
}
Alguém jah passou por algo parecido e pode me ajudar? Estou fazendo algo de errado?
Agradeço desde jah ah atenção dispensada.