Discussions
Categories
Groups
Community Home
Categories
INTERNAL ENABLEMENT
POPULAR
PUBLIC CLOUD
PRIVATE CLOUD
Quick Links
MY LINKS
HELPFUL TIPS
Back to website
Home
Intelligence (Analytics)
Duplicate report requests from same user
keith_c06
Hello all,
I am working with reports written using birt 2.3.1 and deployed into a tomcat 5.5.27 application server using the web viewer example and have run in to an issue that has baffled me for a couple of days now.
If a single user, with a single session, requests the same report 2x, one will complete and the other will throw an error. The error has been one of two errors:
1. Report document instance is empty, or
2. org.eclipse.birt.report.service.api.ReportServiceException
org.eclipse.birt.report.service.api.ReportServiceException at org.eclipse.birt.report.service.ReportEngineService.openReportDocument(ReportEngineService.java:504) at org.eclipse.birt.report.service.BirtViewerReportService.openReportDocument(BirtViewerReportService.java:256) at org.eclipse.birt.report.service.BirtViewerReportService.getPageCount(BirtViewerReportService.java:683) at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.prepareParameters(AbstractGetPageActionHandler.java:140) at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.__execute(AbstractGetPageActionHandler.java:106) at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(AbstractBaseActionHandler.java:90) at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(AbstractBaseDocumentProcessor.java:47) at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(AbstractBaseComponentProcessor.java:143) at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleGetPage(BirtDocumentProcessor.java:87) at sun.reflect.GeneratedMethodAccessor127.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.process(AbstractBaseComponentProcessor.java:112) at org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl.getUpdatedObjects(BirtSoapBindingImpl.java:66) at sun.reflect.GeneratedMethodAccessor126.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:225) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:112) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:595) Caused by: org.eclipse.birt.report.engine.api.EngineException at org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDocument(ReportEngineHelper.java:413) at org.eclipse.birt.report.engine.api.impl.ReportEngine.openReportDocument(ReportEngine.java:629) at org.eclipse.birt.report.service.ReportEngineService.openReportDocument(ReportEngineService.java:498) ... 47 more
I have deduced this is happening because each report request is trying to "grab" the same resource (the report document for rendering), but I cannot think of a way to work around this. In my deployment environment, it is very plausible for one user to request the same report with different parameters for comparison purposes. I would like to have them not get an error every time they try.
Any help would be greatly appreciated.
Thanks,
Keith
Find more posts tagged with
Comments
JasonW
Keith,
Did you get this working?
Jason
keith_c06
Jason,
Partially... I found a work around for reports requested inside of another report (i.e. drill-downs) by dynamically creating the URI for the drill-through with a report ID through a custom function. This ensures that each report request has a unique identifier associated with it, and a separate report document for each request.
However, I have not found a work around for reports requested from my custom parameter pages. In each parameter page the "id" must be set, but the value associated with the "id" cannot be a variable. I have not found a way around this during my research into how JSP pages work, but I am still looking. Any help or insight would be greatly appreciated.
Thanks,
Keith
JasonW
Keith,
Can you post the custom parameter page?
Jason
keith_c06
Jason,
Here is the jsp page. It has some custom functions to validate the input, but it has not been modified to adjust the "id" of the requested report.
Thanks,
Keith
keith_c06
Jason,
I realized I could do something very simple to solve my problem. I added these two lines at the beginning of the body section:
<%! SimpleDateFormat dformat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String rptID = dformat.format(new Date()); %>
then in my "parameterPage" tag the report id is defined as:
id='<%= rptID %>'
That fixes it. Now each time this page is loaded, the report id is the server time down to the millisecond, which is very difficult to replicate.
Thanks again for looking at this,
Keith
JasonW
Keith,
Is there any chance you could log a bug with the two issues you had? These resources should not have been conflicting.
Jason
keith_c06
Jason,<br />
<br />
The bug report has been committed. It is at:<br />
<a class='bbc_url' href='
https://bugs.eclipse.org/bugs/show_bug.cgi?id=267031'>https://bugs.eclipse.org/bugs/show_bug.cgi?id=267031</a><br
/>
<br />
Thanks,<br />
<br />
Keith
JasonW
Thanks Keith