RESOLVIDO! Relatorios Ireport + Vraptor

Galera alguém já conseguiu gerar relatórios em pdf com ireport e vraptor? tenho um código pronto com o struts porém não roda no logic do vraptor? alguém poderia me dar uma ajudinha?

De que forma esta fazendo?

No struts faço assim

ListaAlunosForm listaAlunosForm = (ListaAlunosForm) form;
con.getConnection();
AlunosService alunosService = new AlunosService();
List<Alunos> list = alunosService.selectAlunos(alunos);
request.setAttribute("list", list);
if(listaAlunosForm.getOperacao() != null){
/////////////////////////////Relatorios/////////////////////////////
String pathJasper = getServlet().getServletContext().getRealPath("/relatorios/") + "/";
String pathImages = getServlet().getServletContext().getRealPath("/relatorios/") + "/";
String path = getServlet().getServletContext().getRealPath("/");
Map parametros = new HashMap();
parametros.put("SUBREPORT_DIR", pathJasper);
parametros.put("IMAGES_URI", pathJasper);
try {
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
JasperPrint impressao = JasperFillManager.fillReport(pathJasper + "/Alunos.jasper",
parametros, ds);
byte[] bytes = JasperExportManager.exportReportToPdf(impressao);
byte[] arquivo = bytes;
String nomeDoArquivo = "Alunos.pdf";
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment;
filename=".concat(nomeDoArquivo));
response.setContentLength(arquivo.length);
ServletOutputStream sos = response.getOutputStream();
sos.write(arquivo, 0, arquivo.length);
sos.flush();
sos.close();
} catch (Exception e) {
if(e.getClass().getSimpleName().equals("AbortException")){
System.out.println("Documento cancelado");
} else{
System.out.println("Outros");
}
}
}
con.closeConnection();
return mapping.findForward(SUCCESS);
}
}

mais no vraptor nao sei como fazer, pode me ajudar?

A resposta esta em anexo, obrigado pela ajuda de todos vcs

package ramal.logic;



import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.HashMap;

import java.util.List;

import java.util.Map;



import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.ServletContext;





import net.sf.jasperreports.engine.JasperExportManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;



import org.vraptor.annotations.Component;

import org.vraptor.annotations.Viewless;



import com.isdra.persistence.Conexao;

import com.isdra.service.RamalService;

import com.isdra.vo.Ramal;



@Component("report")

public class RelatorioDeContratosLogic{

    

	Conexao con = new Conexao();

	

	@Viewless   

	public void geraRelatorio(final ServletContext context, HttpServletRequest request, HttpServletResponse response) throws Exception{   	    

		

		con.getConnection();

		

		/*

		 * Codigo para consultar a lista

		 */

		RamalService ramalService = new RamalService();		

		Ramal ramal = new Ramal();

		

		List&lt;Ramal&gt; list = ramalService.selectRamalAll(ramal);						   

		

		/*

		 * Final da consulta, retorna array para converter em pdf

		 */

		

		//Localiza o contexto da pasta onde esta localizado o .jasper

		String pathJasper = context.getRealPath("/ireport/") + "/"; 

		

		//Faz o mapeamento do context para levar o .jasper a conversao em bytes

		Map parametros = new HashMap();

		parametros.put("SUBREPORT_DIR", pathJasper);

		

		try {

		//Recebe a lista do array populado	

		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);

		//pega o ds + a conexao para ir ate o ireport para listar o array dentro do relatorio

		JasperPrint impressao = JasperFillManager.fillReport(pathJasper + "/ramal.jasper",

		parametros, ds);

		

		//converte o relatorio em bytes gerando o pdf

		byte[] bytes = JasperExportManager.exportReportToPdf(impressao);

		byte[] arquivo = bytes;

		

		//Tratamento para exportacao do pdf para a url do browser e o tratamento de erros.

		String nomeDoArquivo = "ramal.pdf";

		response.setContentType("application/x-msdownload");

		response.setHeader("Content-Disposition", "attachment; filename=".concat(nomeDoArquivo));

		response.setContentLength(arquivo.length);

		ServletOutputStream sos = response.getOutputStream();

		sos.write(arquivo, 0, arquivo.length);

		sos.flush();

		sos.close();

		} catch (Exception e) {

		if(e.getClass().getSimpleName().equals("AbortException")){

		System.out.println("Documento cancelado");

		} else{

		System.out.println("Outros");

		}

		}

		}

		

}