Ola pessoal
Como faço para executar um relatorio PDF dentro de um MBean ?
Consegui atraves do seguinte codigo executar dentro de um servlet:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
InputStream isReport = this.getClass().getResourceAsStream("/br/com/banstur/seguranca/resources/jr/rptDepartamentos.jasper");
try {
JasperReport jrReport = (JasperReport)JRLoader.loadObject(isReport);
Collection c = (Collection)request.getSession().getAttribute("session.Deparatamentos");
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(c);
Map parameters = new HashMap();
byte[] bytes = JasperRunManager.runReportToPdf(jrReport , parameters, ds);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
try {
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(bytes, 0, bytes.length);
outputStream.flush();
outputStream.close();
} catch (IOException ex) {
ex.printStackTrace();
}
} catch (JRException e) {
}
}
Dentro do MBean eu consigo manipular a Request e a Response atraves do FacesContext.
Porém o browser chega ate a iniciar o acrobat internamente mas da arquivo corrompido.
Tem alguma tecnica para adaptar este codigo dentro do Mbean, pois o problema é a saida do método do mBean que é acionado apartir de um commandbutton e retorna um outcome.