|
|
Passing Multiple Connections to Jasper Reports
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:Code:
org..web.util.NestedServletException: Request processing failed; nested exception is net.sf.jasperreports.engine.JRException: Unable to get next record.
org..web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:408)
org..web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350)
javax.servlet.from.fromServlet.service(fromServlet.java:689)
javax.servlet.from.fromServlet.service(fromServlet.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..web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.java:591)
org..web.servlet.view.jasperreports.AbstractJasperReportsView.renderMergedOutputModel(AbstractJasperReportsView.java:514)
org..web.servlet.view.AbstractView.render(AbstractView.java:248)
org..web.servlet.DispatcherServlet.render(DispatcherServlet.java:1055)
org..web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:819)
org..web.servlet.DispatcherServlet.doService(DispatcherServlet.java:728)
org..web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
org..web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350)
javax.servlet.from.fromServlet.service(fromServlet.java:689)
javax.servlet.from.fromServlet.service(fromServlet.java:802)
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.
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:Code:
lt;bean id=quot;dataSourcequot; class=quot;com.tandem.t4jdbc.SQLMXDataSourcequot;gt; lt;property name=quot;uclquot; value=quot;jdbc:t4sqlmx--100.0.0.20:61000/:quot;/gt;
lt;property name=quot;userquot; value=quot;USERquot;/gt;
lt;property name=quot;passwordquot; value=quot ASSWORDquot;/gt;
lt;/beangt;
lt;bean id=quot;subReportDataSourcequot; class=quot;com.tandem.t4jdbc.SQLMXDataSourcequot;gt;
lt;property name=quot;uclquot; value=quot;jdbc:t4sqlmx--100.0.0.20:61000/:quot;/gt;
lt;property name=quot;userquot; value=quot;USERquot;/gt;
lt;property name=quot;passwordquot; value=quot ASSWORDquot;/gt;
lt;/beangt;
lt;bean id=quot;simpleReportCompilequot; class=quot;org..web.servlet.view.jasperreports.JasperReportsPdfViewquot;gt;
lt;property name=quot;uclquot;gt;
lt;valuegt;/WEB-INF/reports/ECMReport.jrxmllt;/valuegt;
lt;/propertygt;
lt;property name=quot;jdbcDataSourcequot;gt;lt;ref bean=quot;dataSourcequot;/gt; lt;/propertygt;
lt;property name=quot;subReportuclsquot;gt; lt;mapgt; lt;entry key=quot;ECMReportDistListquot;gt;
lt;valuegt;/WEB-INF/reports/ECMReportDistList.jrxmllt;/valuegt;
lt;/entrygt;
lt;/mapgt;
lt;/propertygt;
lt;/beangt;
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.
Can anyone help with this? |
|