|
Re: Error after creating the second report [message #490971 is a reply to message #490572] |
Mon, 12 October 2009 15:54 |
|
Danny,
Only startup the platform once. This is an expensive operation. Every
time you wish to run a report just create a new engine task. If you are
writing a servlet take a look at this example:
http://wiki.eclipse.org/Servlet_Example_%28BIRT%29_2.1
Be sure to look at updated code at the bottom of the page.
Jason
danny.vandijck@axxes-it.com wrote:
> Hello everyone,
>
> I'm still testing BIRT, but i got a small problem.
>
> The first call for the code to generate a document goes fine.
>
> But if i call it again afterwards i get this error:
>
> Servlet.service() for servlet pdfgeneration threw exception
> java.lang.ExceptionInInitializerError: null
> at org.eclipse.birt.report.engine.api.impl.ReportEngineFactory$
> 1.run(ReportEngineFactory.java:18)
> at org.eclipse.birt.report.engine.api.impl.ReportEngineFactory$
> 1.run(ReportEngineFactory.java:1)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.birt.report.engine.api.impl.ReportEngineFactory.
> createReportEngine(ReportEngineFactory.java:14)
> at com.axxes.fojofolio.server.service.birt.ExecuteReport.execut
> eReport(ExecuteReport.java:44)
> at com.axxes.fojofolio.server.service.birt.PdfGeneration.doGet(
> PdfGeneration.java:42)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi
> lter(ApplicationFilterChain.java:237)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App
> licationFilterChain.java:157)
> at org.apache.catalina.core.StandardWrapperValve.invoke(Standar
> dWrapperValve.java:214)
> at org.apache.catalina.core.StandardValveContext.invokeNext(Sta
> ndardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPip
> eline.java:520)
> at org.apache.catalina.core.StandardContextValve.invokeInternal
> (StandardContextValve.java:198)
> at org.apache.catalina.core.StandardContextValve.invoke(Standar
> dContextValve.java:152)
> at org.apache.catalina.core.StandardValveContext.invokeNext(Sta
> ndardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPip
> eline.java:520)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHo
> stValve.java:137)
> at org.apache.catalina.core.StandardValveContext.invokeNext(Sta
> ndardValveContext.java:104)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
> rtValve.java:118)
> at org.apache.catalina.core.StandardValveContext.invokeNext(Sta
> ndardValveContext.java:102)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPip
> eline.java:520)
> at org.apache.catalina.core.StandardEngineValve.invoke(Standard
> EngineValve.java:109)
> at org.apache.catalina.core.StandardValveContext.invokeNext(Sta
> ndardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPip
> eline.java:520)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.
> java:929)
> at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapte
> r.java:160)
> at org.apache.coyote.http11.Http11Processor.process(Http11Proce
> ssor.java:799)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
> ler.processConnection(Http11Protocol.java:705)
> at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndp
> oint.java:577)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
> n(ThreadPool.java:683)
> at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.IllegalStateException: null
> at org.mozilla.javascript.ContextFactory.initGlobal(ContextFact
> ory.java:209)
> at org.eclipse.birt.report.engine.api.impl.ReportEngine.<clinit
> >(ReportEngine.java:234)
> at org.eclipse.birt.report.engine.api.impl.ReportEngineFactory$
> 1.run(ReportEngineFactory.java:18)
> at org.eclipse.birt.report.engine.api.impl.ReportEngineFactory$
> 1.run(ReportEngineFactory.java:1)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.birt.report.engine.api.impl.ReportEngineFactory.
> createReportEngine(ReportEngineFactory.java:14)
> at com.axxes.fojofolio.server.service.birt.ExecuteReport.execut
> eReport(ExecuteReport.java:44)
> at com.axxes.fojofolio.server.service.birt.PdfGeneration.doGet(
> PdfGeneration.java:42)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi
> lter(ApplicationFilterChain.java:237)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App
> licationFilterChain.java:157)
> at org.apache.catalina.core.StandardWrapperValve.invoke(Standar
> dWrapperValve.java:214)
> at org.apache.catalina.core.StandardValveContext.invokeNext(Sta
> ndardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPip
> eline.java:520)
> at org.apache.catalina.core.StandardContextValve.invokeInternal
> (StandardContextValve.java:198)
> at org.apache.catalina.core.StandardContextValve.invoke(Standar
> dContextValve.java:152)
> at org.apache.catalina.core.StandardValveContext.invokeNext(Sta
> ndardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPip
> eline.java:520)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHo
> stValve.java:137)
> at org.apache.catalina.core.StandardValveContext.invokeNext(Sta
> ndardValveContext.java:104)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
> rtValve.java:118)
> at org.apache.catalina.core.StandardValveContext.invokeNext(Sta
> ndardValveContext.java:102)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPip
> eline.java:520)
> at org.apache.catalina.core.StandardEngineValve.invoke(Standard
> EngineValve.java:109)
> at org.apache.catalina.core.StandardValveContext.invokeNext(Sta
> ndardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPip
> eline.java:520)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.
> java:929)
> at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapte
> r.java:160)
> at org.apache.coyote.http11.Http11Processor.process(Http11Proce
> ssor.java:799)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand
> ler.processConnection(Http11Protocol.java:705)
> at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndp
> oint.java:577)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru
> n(ThreadPool.java:683)
> at java.lang.Thread.run(Unknown Source)
>
>
>
> code of the report generating:
>
> public void executeReport() throws EngineException {
>
> IReportEngine engine = null;
> EngineConfig config = null;
> IReportEngineFactory factory = null;
>
> try {
> config = new EngineConfig();
> config
> .setBIRTHome("
> C:\\Users\\javadev\\Desktop\\birt-runtime-2_5_1\\ReportEngin e ");
> config.setLogConfig(null, Level.FINE);
>
> config
> .getAppContext()
> .put("OdaJDBCDriverClassPath",
>
> "C:/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar");
>
> Platform.startup(config);
>
> factory = (IReportEngineFactory) Platform
>
> .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_E
> NGINE_FACTORY);
>
> System.out.println(factory);
> System.out.println(config);
> engine = factory.createReportEngine(config);
>
>
>
> IReportRunnable design = null;
> design = engine
>
> .openReportDesign("src/test/java/birt/reports/secondTry.rptdesign ");
> IRunAndRenderTask task = engine.createRunAndRenderTask(design);
>
> Calendar calendar = Calendar.getInstance();
> calendar.set(2009, 2, 1);
> Date date = calendar.getTime();
>
> task.setParameterValue("startDate", date);
>
> // PDFRenderOption options = new PDFRenderOption();
> HTMLRenderOption options = new HTMLRenderOption();
> options
>
> .setOutputFileName("c:/Users/javadev/Desktop/tempbirt/test3.html ");
>
> options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML) ;
>
> task.setRenderOption(options);
> task.run();
> task.close();
> task = null;
> engine.destroy();
> engine = null;
> } catch (Exception ex) {
> System.out.println("Error in executeReport : ");
> ex.printStackTrace();
> } finally {
> Platform.shutdown();
>
> }
> }
>
>
> Strangly enough after the second time the error appears at:
>
> engine = factory.createReportEngine(config);
>
> Could someone have an idea why ?
>
> thx a lot !
|
|
|
Powered by
FUDForum. Page generated in 0.02271 seconds