Execuntado um relatorio

Ola gostaria de saber como faço para executar um relatorio criado com ireport na minha aplicação???

abraço

E aí, beleza?

Eu costumo fazer assim:


JRBeanCollectionDataSource dataSourceCarteira = new JRBeanCollectionDataSource(list); // recebe um List com os meus objetos
		
try{
     JasperPrint report = JasperFillManager.fillReport("./report.jasper", null, dataSource); // passo o caminho do arquivo .jasper, um Map de parâmetros (nulo, neste caso) e o data source criado anteriormente
     JasperPrintManager.printReport(report, true);// imprime o relatório
}
catch (JRException exception){}

E para sair em PDF?

Taí um servlet de exemplo, isso que o GUJ já tem exemplos citados em outros tópicos:

// nome do relatorio
String reportName = request.getParameter("reportName");	
			   
if (reportName == null || reportName.equals("")) {
throw new Exception("Nome do relatório deve ser informado.");
}
			
// copia parametros da requisição
Enumeration en = request.getParameterNames();
Map parameters = new HashMap();
while(en.hasMoreElements()){
String key = (String) en.nextElement();
parameters.put(key, request.getParameter(key)); 
}
parameters.put("REPORT_LOCALE", new Locale("pt", "br")); 		    	    
// conexão do datasource
PoolConnection pool = new PoolConnection();
conn = pool.getJdbcURL().getConnection();    	

// carrega relatório
JasperReport relatorio = ReportUtils.getReport(reportName);	    
JasperPrint jasperPrint = JasperFillManager.fillReport(relatorio, parameters, conn);
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();

// exporta para pdf
JasperExportManager.exportReportToPdfStream(jasperPrint, arrayOutputStream);            
		    
// define os cabecalhos do header            
response.setHeader("Pragma","");
response.setHeader("Cache-Control","");
response.setHeader("Expires","");
response.setContentType("application/pdf");
response.setContentLength(arrayOutputStream.size());

// escreve o relatorio no response
OutputStream out = response.getOutputStream();		    
arrayOutputStream.writeTo(out);
out.flush();	
out.close();