CABI / JasperReports scheduled reports fail after upgrade
search cancel

CABI / JasperReports scheduled reports fail after upgrade

book

Article ID: 265888

calendar_today

Updated On:

Products

Spectrum

Issue/Introduction

After upgrading Spectrum and SRM to 22.2.6 and CABI to 7.9.2 everything seems to have worked ok.

However we recently tried to schedule reports, and they are not working. The error in $CABI_HOME/apache-tomcat/webapps/jasperserver-pro/WEB-INF/logs/jasperserver.log is as follow

2023-05-03T12:15:00,463 ERROR SecureExceptionHandlerImpl,JasperServerScheduler_Worker-1:116 - There was an error on the server. Try again or contact site administrators. (Error UID: 4913025e-7434-44db-ad6f-b71d6d8a8d7b)
2023-05-03T12:15:00,496 ERROR ReportExecutionJob,JasperServerScheduler_Worker-1:327 - error.generating.report (Error UID: 4913025e-7434-44db-ad6f-b71d6d8a8d7b) com.jaspersoft.jasperserver.api.JSExceptionWrapper: net.sf.jasperreports.engine.JRException: Error loading scriptlet class: com.ca.bicoe.jasper.CustomFunctions.
at net.sf.jasperreports.engine.scriptlets.DefaultScriptletFactory.getScriptlet(DefaultScriptletFactory.java:114)
at net.sf.jasperreports.engine.scriptlets.DefaultScriptletFactory.getScriplets(DefaultScriptletFactory.java:89)
at net.sf.jasperreports.engine.fill.JRFillDataset.createScriptlets(JRFillDataset.java:532)
at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:651)
at net.sf.jasperreports.engine.fill.JRParameterDefaultValuesEvaluator.evaluateParameterDefaultValues(JRParameterDefaultValuesEvaluator.java:90)
at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.getReportInputControlsInformation(EngineServiceImpl.java:2750)
at com.jaspersoft.ji.adhoc.service.AdhocEngineServiceImpl.getReportInputControlsInformation(AdhocEngineServiceImpl.java:2686)
at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.getReportInputControlsInformation(EngineServiceImpl.java:2708)
at com.jaspersoft.ji.engine.ProEngineServiceImpl.getReportInputControlsInformationInternal(ProEngineServiceImpl.java:94)
at com.jaspersoft.ji.engine.ProEngineServiceImpl.getReportInputControlsInformation(ProEngineServiceImpl.java:57)
at com.jaspersoft.ji.engine.ProEngineServiceImpl.getReportInputControlsInformation(ProEngineServiceImpl.java:192)
at com.jaspersoft.ji.engine.ProEngineServiceImpl$$FastClassBySpringCGLIB$$fd2f8cb9.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:136)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
at com.jaspersoft.ji.adhoc.service.AdhocEngineServiceImpl$$EnhancerBySpringCGLIB$$45b476b0.getReportInputControlsInformation(<generated>)
at com.jaspersoft.ji.report.options.engine.ReportOptionsExecutionJob.collectReportParameters(ReportOptionsExecutionJob.java:72)
at com.jaspersoft.ji.remote.dashboard.DashboardExecutionJob.collectReportParameters(DashboardExecutionJob.java:135)
at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.executeAndSendReport(ReportExecutionJob.java:476)
at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.execute(ReportExecutionJob.java:219)
at com.jaspersoft.ji.report.options.engine.ReportOptionsExecutionJob.execute(ReportOptionsExecutionJob.java:45)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.ClassNotFoundException: com.ca.bicoe.jasper.CustomFunctions
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1420)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:208)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:148)
at net.sf.jasperreports.engine.scriptlets.DefaultScriptletFactory.getScriptlet(DefaultScriptletFactory.java:109)
... 28 more
 
Next was already tried without success
 
- The spectrumConfigInstaller.jar was installed again, and the reports redeployed.
- The reports run OK when manually executed with the same parameters as scheduled
- The JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" is set in /opt/CA/SC/CABI/apache-tomcat/bin/setenv.sh
- The packages mentioned in the documentation are installed in the Jasper box
   https://techdocs.broadcom.com/us/en/ca-enterprise-software/it-operations-management/dx-netops/23-3/ca-business-intelligence-for-netops/system-requirements.html
 

Environment

Release : 7.9.2.x

Cause

While rerunning the spectrumconfiginstaller.jar for the new release, we suggest cleaning the currently deployed webapp and then running it. 

Resolution

1. Stop Servers ($CABI_HOME/stopServers.sh)

2. remove the content of 
    - $CABI_HOME/apache-tomcat/temp
    - $CABI_HOME/apache-tomcat/work

3. Move/delete existing $CABI_HOME/apache-tomcat/webapps/SpectrumProxy.war and $CABI_HOME/apache-tomcat/webapps/SpectrumProxy/ to another location (out of $CABI_HOME)

4. Log in to OC and navigate to
   Administration -> Report Manager -> Jasper Integration Page

5. Download the latest spectrumConfigInstaller.jar into Jasper Server (Integration components)

6. Run the downloaded Jar file as
   $CABI_HOME/java/bin/java -jar spectrumConfigInstaller.jar -install

7. Start Jasper Server ($CABI_HOME/startServers.sh)

8. Once the Jasper is up and running, do 'Re-deploy' from the Jasper Integration page.

9. Verify that JasperServer is up and running and able to run scheduled reports.

Additional Information

If the Jasper logo were changed, the above procedure may return that to the default images. They will need to be manually changed again.

Adding a Custom Logo to CABI JasperServer Reports