Renderizar PDF + jasper + jsf

Olá pessoal, possuo o seguinte código:

[code]FacesContext facesContext = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext) facesContext
.getExternalContext().getContext();
String pathRel = servletContext
.getRealPath("/relatorio/rota_parada.jasper");
HttpServletResponse response = (HttpServletResponse) facesContext
.getExternalContext().getResponse();

		if (rotaService == null) {
			log.error("RotaSE n�o foi instanciado.");
			return;
		}
		Map<String, Object> parameters = new HashMap<String, Object>();
		parameters.put("filtro", getFiltro());
		parameters.put("imagem", servletContext
				.getRealPath("/img/logogafor.gif"));
		parameters.put("powered", servletContext
				.getRealPath("/img/powered.gif"));

		JRDataSource coll = new JRResultSetDataSource(rotaService
				.getRotasRelatorioResult(rota, placaCarreta, produtoId,
						placaVeiculo, cidade, estado, motorista,
						dataInicial, dataFinal, cliente, statusID));

		errorMsgs.clear();

		if (parameters != null)
			parameters.put(JRParameter.REPORT_LOCALE, new Locale("pt"));
		
		JasperPrint jp = JasperFillManager.fillReport(pathRel, parameters,
				coll);
		
		byte[] relatorio = JasperExportManager.exportReportToPdf(jp);
		response.setContentType("application/pdf");
		response.getOutputStream().write(relatorio); [/code]

Porém ele não abre no browser e também não gera nenhum erro.
Alguém pode me ajudar? :cry:

Da forma anterior não consegui resolver.
Então utilizei esse código:

[code] public static void abrirRelatorio(byte[] bytes, String fileName) throws Exception {
if (bytes == null)
throw new Exception(“Array de bytes nulo.”);

	if (fileName == null)
		throw new Exception("Nome do arquivo é nulo.");

	FacesContext facesContext = FacesContext.getCurrentInstance();
	HttpServletResponse response = (HttpServletResponse) facesContext
			.getExternalContext().getResponse();
	response.setHeader("Content-Disposition", "attachment; filename=\""
			+ fileName + "\";");
	response.setContentLength(bytes.length);
	ServletOutputStream ouputStream = response.getOutputStream();
	ouputStream.write(bytes, 0, bytes.length);
	facesContext.responseComplete();
}

     public void gerarRelatorio() throws Exception {
	FacesContext facesContext = FacesContext.getCurrentInstance();
	ServletContext servletContext = (ServletContext) facesContext
			.getExternalContext().getContext();
	String pathRel = servletContext
			.getRealPath("/relatorio/rota_parada.jasper");
	// parametros
	Map<String, Object> parameters = new HashMap<String, Object>();
	parameters.put("filtro", getFiltro());
	parameters.put("imagem", servletContext
			.getRealPath("/img/logogafor.gif"));
	parameters.put("powered", servletContext
			.getRealPath("/img/powered.gif"));

	// recebe por parametro uma lista da propia classe jah populada
	JRDataSource coll = new JRResultSetDataSource(rotaService
			.getRotasRelatorioResult(rota, placaCarreta, produtoId,
					placaVeiculo, cidade, estado, motorista, dataInicial,
					dataFinal, cliente, statusID));

	try {
		JasperPrint print = JasperFillManager.fillReport(pathRel,
				parameters, coll);
		byte[] bytes = JasperExportManager.exportReportToPdf(print);
		Util.abrirRelatorio(bytes, "ListaViagens.pdf");
	} catch (Exception e) {
		e.printStackTrace();
	}
}[/code]

Espero que possa ajudar alguém…
:slight_smile: