[Resolvido] Problemas ao gerar pdf com o iReport e o JavaServer Faces

Olá pessoal, boa noite.
Seguinte, já andei pesquisando por ai diversas formas de gerar o relatorio no browser do cliente.
Infelizmente, ao executar os métodos para geração do mesmo, nada acontece. Ao ser acionado
o commandButton na página onde os filtros são preenchidos, continua na mesma página. Ele chega a executar completamente os métodos, não exibindo nenhum erro no console.
Segue o código abaixo, se alguém tiver idéia do que está acontecendo:

    public void geraRelatorio() {
        context = FacesContext.getCurrentInstance();
        servletContext = (ServletContext) context.getExternalContext().getContext();
        String caminhoRelatorio = servletContext.getRealPath("/relatorios/jasper");
        relatorioPedidosCliente = caminhoRelatorio + "\\RelatorioPedidosCliente.jasper";
        parametroMap = new HashMap<String, Serializable>();
        String sql = montaSQL(cliente.getIdCliente(),
                dataInicio != null ? Funcoes.formataDataEmString(dataInicio) : "",
                dataFim != null ? Funcoes.formataDataEmString(dataFim) : "");
        parametroMap.put("sql", sql);

        /* criando novo cliente apos passagem de parametro para nova pesquisa */
        cliente = new Cliente();
        String dataIni = dataInicio != null ? Funcoes.formataDataEmString(dataInicio) : "00/00/0000";
        String dataF = dataFim != null ? Funcoes.formataDataEmString(dataFim) : "00/00/0000";
        String periodo = "Período de: " + dataIni + " a " + dataF;
        parametroMap.put("periodo", periodo);
        enviarPdf();
    }

    public void enviarPdf() {
        try {
            HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
            // Configura o response para suportar o relatório
            response.setContentType("application/pdf");
            response.addHeader("Content-disposition", "inline; filename=\"arquivo.pdf\"");
            // Preenche o relatório com os parametros e o data source
            JasperPrint jasperPrint = JasperFillManager.fillReport(relatorioPedidosCliente, parametroMap, HibernateUtil.recuperaConexao());
            // Exporta o relatório
            JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());
            // Salva o estado da aplicação no contexto do JSF
            context.getApplication().getStateManager().saveSerializedView(context);
            // Fecha o stream do response
            context.responseComplete();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

Detalhe, as libs iText e o Poi estão devidamente na pasta lib da aplicação e estão funcionando normalmente. O relatório também está ok,
pois executando o comando para o mesmo ser visualizado este funciona: JasperViewer.viewReport(impressao, false);

Agradeço desde já,
Att,
Lessandro

Com a ajuda de um amigo, Rafael Ponte, me disse que para geração do relatório não poderia ser utilizado ajax.
Como estava utilizando o componente p:commandButton do primefaces foi só colocar a tag ajax=“false” que o problema foi solucionado.
Por incrível que pareça era apenas isso.
Também rodando por aki, encontrei uma solução para abrir o relatório numa nova janela, como utilizado em diversos sites por aí.

No MB do relatório ao invés de utilizar:

            response.addHeader("Content-disposition", "inline; filename=\"arquivo.pdf\"");

Foi só substituir por:

            response.addHeader("Content-disposition", "attachment; filename=\"arquivo.pdf\"");

Dessa forma mandando abrir como anexo, permitindo ao usuário abrir ou salvar.

Abs,
Lessandro

Posta aqui a classe que conecta no bd para eu tirar uma dúvida Lessandro !

Valeu.

Eu utilizo o Hibernate, e o meu MB nada mais que busca o usuário pelo ID passando este para o DAO e recuperando-o.
Abs,
Lessandro