Relatórios com IReport e JasperReport 3ª Tentativa

Pessoal, estou com problemas ao gerar relatórios com IReport. O relatório esta sendo gerado perfeitamente, mas na hora de abrir ele informa que o arquivo está corrompido. Alguém poderia me dar uma força para corrigir este problema?

Faço outra pergunta, qual seria a melhor forma, colocar a consulta no Ireport ou colocar através de um DataSource?

obs: não sei nenhuma das duas, fiz isto através de pesquisas na net!

[code] public String gerarRelatorioGeralPorInscritos() throws Exception {

    try {
        Connection con = Connect.getConexao();
        con.createStatement();
        Statement stmt = con.createStatement();
        String sql = "SELECT * FROM tb_inscritos";
        ResultSet rs = stmt.executeQuery(sql);
        JRResultSetDataSource dataSource = new JRResultSetDataSource(rs);
        HashMap map = new HashMap();
        map.put("sql", sql);
        
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
        InputStream reportStream = context.getExternalContext().getResourceAsStream("/web/WEB-INF/relatorio/" + "RelatorioGeralPorInscritos.jasper");
        response.setContentType("application/pdf");
        response.setHeader("Content-disposition", "attachment;filename=" + "RelatorioGeralPorInscritos" + ".pdf"); 
        ServletOutputStream servletOutputStream = response.getOutputStream();
        
        try{
            JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, map, dataSource);   
        }finally{
            context.responseComplete();
            servletOutputStream.flush();
            servletOutputStream.close();     
        }
    


    } catch (Exception e) {
        System.out.println("NÃO FOI POSSIVEL EXIBIR O RELATÓRIO");
        e.printStackTrace();
    }
    return "Sucesso";
}[/code]

Grato!