Visualizar Relatorio IReport - Ajuda

Tenho uma aplicaçao JSF, onde estou fazendo os meus relatorios, consigo exportar, e AS VEZES consigo visualizar, as vezes nao. Isso na minha maquina, ou seja em desenvolvimento, já no Cliente, nao funciona, nao consigo visualizar nenhuma vez, so exportar.

esse é o meu codigo.

Informa qual vai ser o relatorio e os parametros, caso houver

Map parameters = new HashMap();
            parameters.put("ifornecedor", campo.getFornecedor());
            parameters.put("data1", campo.getDtInicial());
            parameters.put("data2", campo.getDtFinal());
            parameters.put("scabecalho", filtro);

            RelatorioPadrao.criaRel("RelAvaliacoes.jasper", parameters);

Gera o relatorio.

private static FacesContext context;
    private static ServletContext servletContext;
    private static String caminhoRelatorio;

    public static void criaRel(String caminho, Map parametrs) throws JRException {
        try {
            context = FacesContext.getCurrentInstance();
            servletContext = (ServletContext) context.getExternalContext().getContext();

            caminhoRelatorio = servletContext.getRealPath("WEB-INF/classes/Relatorios/" + "/" + caminho);

            JasperPrint relat = JasperFillManager.fillReport(caminhoRelatorio, parametrs, Conexao.Conecta());
            

            ResultSet rs = Conexao.Consulta("select exportarelatorio, caminhoexporta from admleite.leite_configuracoes");
            boolean bExporta = false;
            String caminhoExporta = null;

            while (rs.next()){
                bExporta = rs.getBoolean("exportarelatorio");
                caminhoExporta = rs.getString("caminhoexporta");
            }
            
            if (bExporta){
            // exportacao do relatorio para outro formato, no caso PDF
            JasperExportManager.exportReportToPdfFile(relat,
                    caminhoExporta + "/" + caminho.replace(".jasper", "") + ".pdf");
            }

            JasperViewer.viewReport(relat, true);

        } catch (Exception e) {
            FacesMessage msg = new FacesMessage(
                    "Erro ao gerar relatório. " + e.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

Para a exportaçao, pra PDF, funciona legal, exporta direitinho, sem erro algum, porém para a visualizaçao em desenvolvimento as vezes funciona, e em cliente nao visualiza.
Nao sei se estou usando o getRealPath() e é isso que está causando o erro…

Estou com todas as libs do IReport na aplicaçao e o meu .war está sendo compilado com o .jasper dos relatorios junto, ou seja, está indo pro cliente tudo, preciso ter o IReport instalado no cliente? ou preciso ter os relatorios separados no cliente??

Alguma dica para como resolver esse problema??

Bem, posso estar errado, mas na web não dah certo você pre-visualizar o relatório como quer, apenas no desktop, na web sempre gere relatorios em formato pdf para o cliente.