Gerar relatorio

Olá a todos,
Estou usado o ireport4.0 para geração de relatório na minha página.Qdo clica no botão aciono o método geraRelalatorio()

public void geraRelalatorio(ActionEvent event) {
		Connection conn = new ConnectionFactory().getConnection();
		HashMap mapa = new HashMap();
	
		try{
			relatorio = JasperFillManager.fillReport("report1.jasper", mapa, conn);
			JasperViewer.viewReport(relatorio, false);
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

	
	public class ConnectionFactory {
		public Connection getConnection() {
		try {
		return DriverManager.getConnection("jdbc:mysql://localhost/TAD","root","root");
		} catch(SQLException e) {
		throw new RuntimeException(e);
		} 
		}
	}
}

O relatório está na pasta WebContent do projeto.
Está retornado o erro:

java.lang.NullPointerException at br.com.csefet.tad.ChequeHandler.geraRelalatorio(ChequeHandler.java:167) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.el.parser.AstValue.invoke(AstValue.java:191) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148) at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) at javax.faces.component.UICommand.broadcast(UICommand.java:300) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at br.com.caelum.fj26.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:23) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source)

Tentei usar o getRealPath com ServletContext dessa forma:

public class ChequeHandler{
private ServletContext context = null;
.....

public void init(ServletConfig config) throws ServletException {
		this.context = config.getServletContext();
	}
	
	public void geraRelalatorio(ActionEvent event) {
		Connection conn = new ConnectionFactory().getConnection();
		HashMap mapa = new HashMap();
		JasperPrint relatorio = null;
		
		try{
			
			String jasperFile = context.getRealPath("report1.jasper");  			  			
			relatorio = JasperFillManager.fillReport(jasperFile, mapa, conn);
			JasperViewer.viewReport(relatorio, false);
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

Mas sempre retorna java.lang.NullPointerException
Alguem tem idéia?

Obrigada

não é relatório web mas… talz ajude.

https://skydrive.live.com/?cid=4C800DD30FDEB3CC&id=4C800DD30FDEB3CC!120&sc=documents#cid=4C800DD30FDEB3CC&id=4C800DD30FDEB3CC%21587&sc=documents

Eu costumo fazer o seguinte:

        private Download geraArquivoPdf(JasperPrint impressao) throws JRException,
                        IOException, FileNotFoundException {
                byte[] bytes = JasperExportManager.exportReportToPdf(impressao);
                byte[] arquivo = bytes;

                File f = File.createTempFile("relatorio", ".pdf");
                f.deleteOnExit();
                FileOutputStream in = new FileOutputStream(f);
                in.write(arquivo);
                in.close();
                String contentType = "application/pdf";
                String fileName = f.getName();
                return new FileDownload(f, contentType, fileName);
        }

Olá jurado e luivilela, obrigado por responder.

Jurado, desculpe a ignorancia, mas o que tem nessa classe Download que voce usa na primeira linha?

private Download geraArquivoPdf(JasperPrint impressao) throws JRException, 

Vlw

http://vraptor.caelum.com.br/documentacao/download-e-upload/

Amigo você baixo o exemplo errado, este que você baixou só exibe um arquivo pdf, não gera um relatório, o exemplo de relatório é o “ExemploRelatorio”.

Da uma olhada na classe -> teste.CriarTabelaBanco e na teste.Relatorio.