Bug 357412 - getHttpServletRequest() method calling fail in BIRT3.7
Summary: getHttpServletRequest() method calling fail in BIRT3.7
Status: NEW
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: BIRT (show other bugs)
Version: unspecified   Edit
Hardware: All Windows 7
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Birt-ReportViewer CLA
QA Contact: weiming tang CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-09-12 15:52 EDT by Hari Seeram CLA
Modified: 2011-11-10 02:39 EST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Hari Seeram CLA 2011-09-12 15:52:25 EDT
Build Identifier: v20110607-1526

We have an application running on JBOSS4.2.2 integrated with BIRT2.3.1. 
In our application we are using SPRING sets values on the report context from the java class and then invoke BIRT using “ModelAndView” spring object with an example snippet from the java class in charge of calling BIRT.

	public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) 
	throws Exception {
        
		ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
		UserApplicationContext userApplicationContext = (UserApplicationContext)appContext.getBean("UserApplicationContext");
		
		BigDecimal reportCharID = userApplicationContext.getCurrentReportCharacteristicsID();
		
		String baseURL = appConfig.get(Constants.REPORT_URL_KEY);
			
		Connection theConnection = null;
		String rptDesign = reportUIConfigurationService.getReportDesingFile(reportID);
		try{
		    theConnection = reportingConnectionOperatorDispatcher.getConnectionAndPrepareForExecution();
			request.getSession(false).setAttribute("theconn",theConnection);
	
			}catch(Exception e){
				logger.error("Error getting connection or preparing for execution of the report!");
			}finally{
				userApplicationContext.removeAllUserPreferences();
			}
			return new ModelAndView(new RedirectView(baseURL+rptDesign));
		}
	}


From the above snippet of the code “theconn” is JDBC connection does some work (put data in global temp table) and then have this connection used by BIRT.
In the initialize method of the report we set OdaJDBCDriverPassInConnection object to use our own connection:
	var conn = reportContext.getHttpServletRequest().getSession().getAttribute("theconn");
	reportContext.getAppContext().put("OdaJDBCDriverPassInConnection", conn);

This code working fine in BIRT2.3.1.

Now we upgraded our JBOSS to JBOSS7.0.1 and BIRT to BIRT3.7.
We replaced our old WebViewerExample folder with the new one.  Copied all jar files in WEB_INF/lib folder.  As per Migration guide we removed setBIRTHome from the code.  
We are getting the following error message when running the reports on BIRT viewer:
The following items have errors: 

ReportDesign (id = 1): 
- There are errors evaluating script " var conn = reportContext.getHttpServletRequest().getSession().getAttribute("theconn");
 reportContext.getAppContext().put("OdaJDBCDriverPassInConnection", conn);


":
javax/transaction/xa/XAResource (Element ID:1) 
birt.core.JavascriptCommonError ( 1 time(s) )
detail : org.eclipse.birt.report.engine.api.EngineException: There are errors evaluating script "	var conn = reportContext.getHttpServletRequest().getSession().getAttribute("theconn");
	reportContext.getAppContext().put("OdaJDBCDriverPassInConnection", conn);


":
javax/transaction/xa/XAResource (Element ID:1)
	at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.addException(ScriptExecutor.java:158)
	at org.eclipse.birt.report.engine.script.internal.ReportScriptExecutor.handleInitialize(ReportScriptExecutor.java:81)
	at org.eclipse.birt.report.engine.api.impl.EngineTask.loadDesign(EngineTask.java:1774)
	at org.eclipse.birt.report.engine.api.impl.RenderTask.render(RenderTask.java:269)
	at org.eclipse.birt.report.service.ReportEngineService.renderReport(ReportEngineService.java:1547)
	at org.eclipse.birt.report.service.BirtViewerReportService.getPage(BirtViewerReportService.java:204)
	at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.doExecution(AbstractGetPageActionHandler.java:238)
	at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.__execute(AbstractGetPageActionHandler.java:105)
	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.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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:265)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
	at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
	at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
	at org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
	at aces.spring.security.filter.SSOAuthenticationProcessingFilter.doFilter(SSOAuthenticationProcessingFilter.java:240)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139)
	at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154)
	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:362)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952)
	at java.lang.Thread.run(Thread.java:662)
Caused by: org.eclipse.birt.core.exception.CoreException: There are errors evaluating script "	var conn = reportContext.getHttpServletRequest().getSession().getAttribute("theconn");
	reportContext.getAppContext().put("OdaJDBCDriverPassInConnection", conn);


":
javax/transaction/xa/XAResource
	at org.eclipse.birt.report.engine.javascript.JavascriptEngine.evaluate(JavascriptEngine.java:295)
	at org.eclipse.birt.core.script.ScriptContext.evaluate(ScriptContext.java:154)
	at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:777)
	at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:706)
	at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.handleScriptInternal(ScriptExecutor.java:61)
	at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.handleScript(ScriptExecutor.java:48)
	at org.eclipse.birt.report.engine.script.internal.ReportScriptExecutor.handleInitialize(ReportScriptExecutor.java:72)
	... 63 more
Caused by: java.lang.NoClassDefFoundError: javax/transaction/xa/XAResource
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
	at java.lang.Class.privateGetPublicMethods(Class.java:2547)
	at java.lang.Class.privateGetPublicMethods(Class.java:2557)
	at java.lang.Class.getMethods(Class.java:1410)
	at org.mozilla.javascript.JavaMembers.discoverAccessibleMethods(JavaMembers.java:380)
	at org.mozilla.javascript.JavaMembers.discoverAccessibleMethods(JavaMembers.java:405)
	at org.mozilla.javascript.JavaMembers.discoverAccessibleMethods(JavaMembers.java:405)
	at org.mozilla.javascript.JavaMembers.discoverAccessibleMethods(JavaMembers.java:335)
	at org.mozilla.javascript.JavaMembers.reflect(JavaMembers.java:450)
	at org.mozilla.javascript.JavaMembers.<init>(JavaMembers.java:76)
	at org.mozilla.javascript.JavaMembers.lookupClass(JavaMembers.java:838)
	at org.mozilla.javascript.NativeJavaObject.initMembers(NativeJavaObject.java:90)
	at org.mozilla.javascript.NativeJavaObject.<init>(NativeJavaObject.java:80)
	at org.mozilla.javascript.NativeJavaObject.<init>(NativeJavaObject.java:70)
	at org.mozilla.javascript.WrapFactory.wrapAsJavaObject(WrapFactory.java:149)
	at org.mozilla.javascript.WrapFactory.wrap(WrapFactory.java:105)
	at org.eclipse.birt.report.engine.javascript.JavascriptEngine$2.wrap(JavascriptEngine.java:160)
	at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:258)
	at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
	at org.mozilla.javascript.gen.c29._c0(/report/method[@name="initialize"]:1)
	at org.mozilla.javascript.gen.c29.call(/report/method[@name="initialize"])
	at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:398)
	at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3065)
	at org.mozilla.javascript.gen.c29.call(/report/method[@name="initialize"])
	at org.mozilla.javascript.gen.c29.exec(/report/method[@name="initialize"])
	at org.eclipse.birt.report.engine.javascript.JavascriptEngine.evaluate(JavascriptEngine.java:290)
	... 69 more
Caused by: java.lang.ClassNotFoundException: javax.transaction.xa.XAResource from [Module "oracle:main" from local module loader @f1bb78 (roots: C:\ACES_develop_jboss_as_7\jboss-as-7.0.1.Final\modules)]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:358)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:330)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:307)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:101)
	... 96 more

					

OdaDataSet Data Set: 
+ Failed to find out data source of data set "Data Set". (Element ID:9) 

Table (id = 10): 
+ Can not load the report query: 10. Errors occurred when generating the report document for the report element with ID 10. (Element ID:10) 



Reproducible: Always

Steps to Reproduce:
1.Create your own connection object in java class.
2.put the above created connection into HttpServletRequest like: request.getSession(false).setAttribute("theconn",theConnection);
3.User "ModelAndView" spring object to call BIRT through Spring pinging URL.
4.Create a sample BIRT report design
5.put the following code in Initialize method of BIRT
	var conn = reportContext.getHttpServletRequest().getSession().getAttribute("theconn");
	reportContext.getAppContext().put("OdaJDBCDriverPassInConnection", conn);
6.Run and view the above created sample design file using step3 method.