Ola pessoal estou desenvolvendo uma aplicação pra faculdade. Estou usando jsf + riface + jasper.
O consegui fazer um relatório em japer mas estou com problema na minha sessão, quando eu gero vários relatórios e sessão trava, eu ja tentei limpar a sessão mas sem sucesso.
segue o código do minha aplicação
public String geraRelatorio() throws ClassNotFoundException, SQLException {
RelCursosDao relCursosDao = new RelCursosDao();
String jasper = getDiretorioReal("/report/relCursos.jasper");
List<CursosTo> listCursos = null;
try {
listCursos = relCursosDao.consultar();
JRDataSource jrds = new JRBeanCollectionDataSource(listCursos);
JasperPrint print = JasperFillManager.fillReport(jasper, null, jrds);
setSaida(preenchePdf(print));
} catch (Exception e) {
e.printStackTrace();
}
return "exibeRelCursos";
}
public String getSaida() {
return saida;
}
public void setSaida(String saida) {
this.saida = saida;
}
public String getDiretorioReal(String diretorio) {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
return session.getServletContext().getRealPath(diretorio);
}
public String getContextPath() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
return session.getServletContext().getContextPath();
}
public String preenchePdf(JasperPrint print) throws JRException, JRException {
String saida = null;
saida = getDiretorioReal("/pdf/relatorio.pdf");
JasperExportManager.exportReportToPdfFile(print, saida);
saida = getContextPath() + "/pdf/relatorio.pdf";
return saida;
}
esse metodo eu uso qdo vou gerar outro relatorio
public void limpaSessao() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
session.invalidate();
}
mas sempre trava, alguem ja passou por isso???
Oque eu to fazendo errado?