Jump to content
We've recently updated our Privacy Statement, available here ×

Parameter not being passed to SQL query in report when executed by the Scheduler


Andy.G_AT

Recommended Posts

I am running a JasperReports 5.6.0 Server with a set of reports that have been working for the past 3 years without any issue.  Some time between the last scheduled running of the reports on December 15h, 2018 and the next running of the reports on January 1, 2019 something happened to the cause the reports to no longer be able to substitute a parameter into the SQL query.

I can run the reports just fine from JasperStudio 5.6.0 by specifying the "ministry" parameter, but when the report is uploaded to the JasperReports server it fails to substitute the $P{ministry} parameter. 

Here is an example from the .jrxml file, the parameter "ministry" is setup in the scheduler to have a defined five character code (such as ININD):

<parameter name="ministry" class="java.lang.String"/>
    <queryString language="SQL">
        <![CDATA[sELECT Nodes.Ministry,
                        UDT_AllEndPoints.ConnectedTo,
                        Nodes.IP_Address,
                        UDT_AllEndPoints.PortNumber,
                        UDT_AllEndPoints.PortName,
                        UDT_AllEndPoints.VLAN,
                        UDT_AllEndPoints.FirstSeen,
                        UDT_EndpointIP.LastUpdate,
                        UDT_AllEndPoints.HostName,
                        UDT_AllEndPoints.IPAddress,
                        UDT_AllEndPoints.MACAddress,
                        Nodes.NodeID,
                        UDT_AllEndPoints.NodeID
                FROM Nodes,
                     UDT_AllEndPoints,
                     UDT_EndpointIP
                WHERE 
                     UDT_AllEndPoints.NodeID = Nodes.NodeID 
                     AND UDT_AllEndPoints.IPAddress = UDT_EndpointIP.IPaddress
                     AND UDT_AllEndPoints.ConnectionTypeName = 'Direct'
                     AND Nodes.Ministry LIKE $P{ministry}
                 ORDER BY
                     Nodes.IP_Address,UDT_AllEndPoints.PortNumber;]]>
    </queryString>

However, when the report is run via the scheduler on the JasperReports server the following error is displayed:

com.jaspersoft.jasperserver.api.JSException: Error filling report
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$FillResultListener.reportFillError(EngineServiceImpl.java:1262)
    at net.sf.jasperreports.engine.fill.BaseFillHandle.notifyError(BaseFillHandle.java:211)
    at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:135)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousExecutor.execute(EngineServiceImpl.java:886)
    at net.sf.jasperreports.engine.fill.BaseFillHandle.startFill(BaseFillHandle.java:165)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1804)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousReportFiller.fillReport(EngineServiceImpl.java:790)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1731)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runWithDataSource(EngineServiceImpl.java:1086)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:1015)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:908)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousExecutor.execute(EngineServiceImpl.java:886)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:607)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.executeReportUnitRequest(EngineServiceImpl.java:1937)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.domain.impl.ReportUnitRequest.execute(ReportUnitRequest.java:67)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.execute(EngineServiceImpl.java:497)
    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.runReport(ReportExecutionJob.java:693)
    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.executeReport(ReportExecutionJob.java:658)
    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.executeAndSendReport(ReportExecutionJob.java:468)
    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.execute(ReportExecutionJob.java:222)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
Caused by: net.sf.jasperreports.engine.JRException: Error preparing statement for executing the report query : 

SELECT Nodes.Ministry,
                        UDT_AllEndPoints.ConnectedTo,
                        Nodes.IP_Address,
                        UDT_AllEndPoints.PortNumber,
                        UDT_AllEndPoints.PortName,
                        UDT_AllEndPoints.VLAN,
                        UDT_AllEndPoints.FirstSeen,
                        UDT_EndpointIP.LastUpdate,
                        UDT_AllEndPoints.HostName,
                        UDT_AllEndPoints.IPAddress,
                        UDT_AllEndPoints.MACAddress,
                        Nodes.NodeID,
                        UDT_AllEndPoints.NodeID
                FROM Nodes,
                     UDT_AllEndPoints,
                     UDT_EndpointIP
                WHERE 
                     UDT_AllEndPoints.NodeID = Nodes.NodeID 
                     AND UDT_AllEndPoints.IPAddress = UDT_EndpointIP.IPaddress
                     AND UDT_AllEndPoints.ConnectionTypeName = 'Direct' 
                     AND Nodes.Ministry LIKE ?


    at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:377)
    at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:196)
    at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1114)
    at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:691)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1314)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:931)
    at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:120)
    ... 19 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The fetch size cannot be negative.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.setFetchSize(SQLServerStatement.java:1617)
    at org.apache.commons.dbcp.DelegatingStatement.setFetchSize(DelegatingStatement.java:276)
    at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:300)
    ... 25 more

 

As stated at the beginning, this report ran just fine on December 15, 2018, but started failing with the above error messages on January 1, 2019.

Any insight as to where I should start troubleshooting these errors?

Thank you!

Link to comment
Share on other sites

  • Replies 0
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...