[Resolvido] Relatorio não gera

Boa tarde

Prezados estou tentando imprimir um relatorio mais ele não gera ou não "aparece"
observo o log no Eclipse e vejo o seguinte

20:06:49,226 DEBUG DefaultExtensionsRegistry:232 - Instantiating extensions registry for simple.font.families using factory class net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
20:06:49,953 DEBUG JRBaseFiller:379 - Fill 16726035: created for rcpapel
20:06:49,993 DEBUG JRBaseFiller:851 - Fill 16726035: filling report
20:06:50,118 DEBUG JRBaseFiller:1699 - Fill 16726035: adding page 1
20:06:50,125 DEBUG JRVerticalFiller:389 - Fill 16726035: page header
20:06:50,297 DEBUG JRVerticalFiller:714 - Fill 16726035: detail
20:06:50,305 DEBUG JRVerticalFiller:714 - Fill 16726035: detail
20:06:50,313 DEBUG JRVerticalFiller:714 - Fill 16726035: detail
20:06:50,313 DEBUG JRVerticalFiller:1025 - Fill 16726035: summary
20:06:50,329 DEBUG JRVerticalFiller:999 - Fill 16726035: page footer
20:06:50,329 DEBUG JRBaseFiller:913 - Fill 16726035: ended

dai não percebo mensagem de erro, mais o relatorio que teria então tres registros
de uma tabela de Papeis ( Role ) não é gerado.

Alguem poderia dar uma dica do que esta ocorrendo, ja tentei muitos tutoriais, procurei
por respostas aqui no grupo semanas atras, li muito, tentei mudanças no codigo que gera
o relatorio mais não obtive sucesso.

Abaixo coloco alguns detalhes de minha aplicação em web
JSF 2, Spring 3 para IOC, EclipseLink JPA 2 Banco Postgre 9
Servidor Tomcat 7

Estou criando uma lista com todos os registros da entidade Papel
no Ireport o relatorio foi feito colocando apenas os campos ou seja não fiz o relatorio
usando uma query

Como assim colocando só os campos?
Como você está alimentando os dados do relatório?

Olá

Então Gerva o relatorio eu criei no Ireport lá eu não fiz uma consulta e preenchi os campos no designer
eu simplesmente sabendo quais os atributos de minha classe Papel.java
(id, paPapel, paDescricao) criei o relatorio

peguei o arquivo jasper e o jrxml copiei para a pasta web-inf\reports no eclipse

os dados para o relatorio vem de uma lista ( uma consulta no banco )
o codigo do programa esta abaixo

@ManagedBean(name="relatorioPapeis")
@SessionScoped
public class RelatorioPapeis {
	
	
	private Papel papel;
	private List<Papel> papelLista;
	
	@ManagedProperty(value = "#{papelService}")
	private PapelService papelService ;

	public Papel getPapel() {
		return papel;
	}

	public void setPapel(Papel papel) {
		this.papel = papel;
	}

	public List<Papel> getPapelLista() {
		return papelService.findAll();
	}

	public void setPapelLista(List<Papel> papelLista) {
		this.papelLista = papelLista;
	}

	public PapelService getPapelService() {
		return papelService;
	}

	public void setPapelService(PapelService papelService) {
		this.papelService = papelService;
	}


	public void imprimir(ActionEvent event) {
		
	    FacesContext facesContext = FacesContext.getCurrentInstance();
            ServletContext servletContext = (ServletContext)facesContext.getExternalContext().getContext();  
            String pathRel = servletContext.getRealPath("WEB-INF/reports/rcpapel.jasper");
            String fileName = "ListaDePapeis.pdf";
        
            HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
        
            papelLista = papelService.findAll();
        
            String[] fields = new String[] { "id", "paPapel", "paDescricao"};
            QueryResultDataSource jrds = new QueryResultDataSource(papelLista, fields);
            // A linha abaixo estava antes, na tentativa de dar certo eu substitui pela linha acima
            //JRDataSource jrds = new JRBeanCollectionDataSource(papelLista);  
        
            try {
        	
        	 JasperPrint print = JasperFillManager.fillReport(pathRel, null, jrds);
        	 byte[] bytes = JasperExportManager.exportReportToPdf(print);        	 
        	 
        	 response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";");
        	 response.setContentLength(bytes.length);  
        	 ServletOutputStream ouputStream = response.getOutputStream();
        	 ouputStream.write(bytes, 0, bytes.length);  
        	 facesContext.responseComplete();
			
		} catch (Exception e) {
			new Exception("Não foi possível listar. Motivo: " + e.getMessage()); 
		}		
		
	}
}

rlira, recentemente tive alguns problemas com geração de relatorios. e esse tutorial aqui me ajudou muito.
Ele é bem basico e completo. POr isso gostei bastante.


Espero que possa lhe ajuda.

osakakitano tudo bem? cara valeu ai so a dica
mais li este post ele realmente é bom, esta dividido em varias partes, a ultima
ele mostra como trabalhar o relatorio na web ( q é o meu caso ) mais, não sei
se é o JSF, algo a ver com o protocolo Http, cara ontem revisei até os Jar´s do
jasper e tá tudo Ok.

Mas, o relatorio nda.

rlira meus conhecimentos em geração de relatorios sao mt basicos, por isso nao tenho como lhe ajudar melhor.

Caro , não tem problema, tô começando (1 ano de java com projeto pessoal) , cheio de duvidas rsrsrsrs, pense num cara
chato é o cara cheio de duvidas rsrsrsrs, mais tô buscando solução e qdo a tiver publico ela aki

Um abraço.

Prezados, hoje ainda sem conseguir uma solução para o meu problema com o relatorio na Web, vi que posso
utilizar o JasperViewer, então comentei a parte do codigo que mostra ( mostraria ) o relatorio no navegador e
então ao testar o relatorio abriu isto quer dizer que o relatorio esta Ok, o programa que chama o relatorio também
mais, e ai qual é o problema pelo qual o relatorio não é mostrado no navegador? o SO ( Windows 7), o Navagador?
o Mozilla e o IE o JSF? mais o que? alguem já passou algo parecido?

Prezados bom dia,

Então apos tanto tempo ( havia até deixado de lado a questão do relatorio no meu aplicativo ), mais hoje consegui fazer funcionar
como eu uso no projeto o primefaces e estava chamando o relatorio atraves de um botão foi apenas inserir a propriedade
ajax = “false” que o mesmo foi gerado no navegador.

Bem não sei explicar tecnicamente a resolução se alguem quizer comentar agradeço, e agradeço tambem ao Flavio foi atraves
da mensagem dele que consegui resolver.

http://www.guj.com.br/java/271820-resolvido-ireport--jsf---relatorio-nao-e-exibido#1427457

Boa tarde galera tive o mesmo problema, meu relatorio gerava o erro
(Instantiating extensions registry for simple.font.families using factory class net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory )
depois de dois dias procurando consegui encontrar o erro (depois de fazer uma oração a DEUS), tinha um campo do tipo text no banco de dados com mais de 15.000 caracteres, com isso o ireport nao conseguia gerar o relatório lançava essa exceção e as vezes estourava a memória.