Hi,
Im having a problem which I believe is being caused by a deficiency in my datasource driver to handle multiple connections.
If I have a simple report and pass it a jdbc connection I have no problem at all. When I try to add a subreport which uses the existing connection I get the following problems:
To try and combat this I want to be able to pass a seperate jdbc datasource as a connection to the Master Report which will be passed to the subreport.Code:org.springframework.web.util.NestedServletException: Request processing failed; nested exception is net.sf.jasperreports.engine.JRException: Unable to get next record. org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:408) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) root cause net.sf.jasperreports.engine.JRException: Unable to get next record. net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:96) net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:715) net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:932) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:130) net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:730) net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:632) net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.java:591) org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.renderMergedOutputModel(AbstractJasperReportsView.java:514) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:248) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1055) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:819) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:728) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
In Jasper this shouldn't be much of a problem - simply setting a new Parameter in the master report with a type of java.sql.Connection and passing it as a connection parameter to the subreport.
My question is how do I get Spring to pass a new connection to the Jasper Report?
My current servlet.xml snippet looks like this:
There is no property I can find which would fit the bill - I need to pass the subReportDataSource to the Jasper Report somehow as a Parameter.Code:<bean id="dataSource" class="com.tandem.t4jdbc.SQLMXDataSource"> <property name="url" value="jdbc:t4sqlmx://100.0.0.20:61000/:"/> <property name="user" value="USER"/> <property name="password" value="PASSWORD"/> </bean> <bean id="subReportDataSource" class="com.tandem.t4jdbc.SQLMXDataSource"> <property name="url" value="jdbc:t4sqlmx://100.0.0.20:61000/:"/> <property name="user" value="USER"/> <property name="password" value="PASSWORD"/> </bean> <bean id="simpleReportCompile" class="org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView"> <property name="url"> <value>/WEB-INF/reports/ECMReport.jrxml</value> </property> <property name="jdbcDataSource"> <ref bean="dataSource"/> </property> <property name="subReportUrls"> <map> <entry key="ECMReportDistList"> <value>/WEB-INF/reports/ECMReportDistList.jrxml</value> </entry> </map> </property> </bean>
Can anyone help with this?


Reply With Quote