Jump to content

JasperServer (AWS) fails to create scheduled PDF report intermittently. (403 error in Google Maps Static API)


kashoory

Recommended Posts

I have a scheduled report with result saved into PDF file. The report has a static google maps.

Everything was perfect during last couple of years until recently that I started to experience failures intermittently. The scheduler fails to export the report into PDF file apparently due to 403 error accessing Google Maps static API. But I'm quite sure I have not changed anything in my side.

I can open the static map in my browser without any issue. I also can get map content with curl on the same ec2 instance of jasperserver without http error. And just mind you that the error is intermitent.

I found the following exception in logs in /var/log/jasperserver/: 


2018-01-17 16:45:04,929 ERROR ReportExecutionJob,quartzScheduler_Worker-1:309 - The export to pdf was not completed. An error interrupted the process.java.lang.RuntimeException: net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error opening input stream from URL : http://maps.google.com/maps/api/staticmap?center=-37.905525,145.12576&size=490x650&zoom=13&maptype=roadmap&format=png&scale=1&markers=label:N%7Cicon:http://labs.google.com/ridefinder/images/mm_20_orange.png%7C-37.878597,145.16536&markers=label:N%7Cicon:http://labs.google.com/ridefinder/images/mm_20_orange.png%7C-37.878597,145.16536&sensor=false&language=en        at net.sf.jasperreports.components.map.MapElementPdfHandler.exportElement(MapElementPdfHandler.java:56)        at net.sf.jasperreports.engine.export.JRPdfExporter.exportGenericElement(JRPdfExporter.java:2801)        at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:969)        at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:920)        at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:797)        at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:514)        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.exportToPdf(EngineServiceImpl.java:559)        at sun.reflect.GeneratedMethodAccessor760.invoke(Unknown Source)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)        at java.lang.reflect.Method.invoke(Method.java:606)        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319)        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)        at com.sun.proxy.$Proxy49.exportToPdf(Unknown Source)        at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.PdfReportOutput.getOutput(PdfReportOutput.java:88)        at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.executeAndSendReport(ReportExecutionJob.java:516)        at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.execute(ReportExecutionJob.java:220)        at com.jaspersoft.ji.report.options.engine.ReportOptionsExecutionJob.execute(ReportOptionsExecutionJob.java:49)        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.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error opening input stream from URL : http://maps.google.com/maps/api/staticmap?center=-37.905525,145.12576&size=490x650&zoom=13&maptype=roadmap&format=png&scale=1&markers=label:N%7Cicon:http://labs.google.com/ridefinder/images/mm_20_orange.png%7C-37.878597,145.16536&markers=label:N%7Cicon:http://labs.google.com/ridefinder/images/mm_20_orange.png%7C-37.878597,145.16536&sensor=false&language=en        at net.sf.jasperreports.repo.DefaultRepositoryService.getInputStream(DefaultRepositoryService.java:117)        at net.sf.jasperreports.repo.InputStreamPersistenceService.load(InputStreamPersistenceService.java:48)        at net.sf.jasperreports.repo.DefaultRepositoryService.getResource(DefaultRepositoryService.java:155)        at net.sf.jasperreports.repo.RepositoryUtil.findInputStream(RepositoryUtil.java:176)        at net.sf.jasperreports.repo.RepositoryUtil.getBytesFromLocation(RepositoryUtil.java:192)        at net.sf.jasperreports.engine.RenderableUtil.getRenderable(RenderableUtil.java:121)        at net.sf.jasperreports.components.map.MapElementImageProvider.getImage(MapElementImageProvider.java:211)        at net.sf.jasperreports.components.map.MapElementPdfHandler.exportElement(MapElementPdfHandler.java:52)        ... 22 moreCaused by: net.sf.jasperreports.engine.JRException: Error opening input stream from URL : http://maps.google.com/maps/api/staticmap?center=-37.905525,145.12576&size=490x650&zoom=13&maptype=roadmap&format=png&scale=1&markers=label:N%7Cicon:http://labs.google.com/ridefinder/images/mm_20_orange.png%7C-37.878597,145.16536&markers=label:N%7Cicon:http://labs.google.com/ridefinder/images/mm_20_orange.png%7C-37.878597,145.16536&sensor=false&language=en        at net.sf.jasperreports.engine.util.JRLoader.getInputStream(JRLoader.java:302)        at net.sf.jasperreports.repo.DefaultRepositoryService.getInputStream(DefaultRepositoryService.java:100)        ... 29 moreCaused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://maps.google.com/maps/api/staticmap?center=-37.905525,145.12576&size=490x650&zoom=13&maptype=roadmap&format=png&scale=1&markers=label:N%7Cicon:http://labs.google.com/ridefinder/images/mm_20_orange.png%7C-37.878597,145.16536&markers=label:N%7Cicon:http://labs.google.com/ridefinder/images/mm_20_orange.png%7C-37.878597,145.16536&sensor=false&language=en        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1628)        at java.net.URL.openStream(URL.java:1048)        at net.sf.jasperreports.engine.util.JRLoader.getInputStream(JRLoader.java:298)        ... 30 more[/code]

 

Link to comment
Share on other sites

  • 9 months later...
  • Replies 3
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Due to recent changes in Google Maps API, you now must provide API key with your call to the API.  Keep in mind there are two API: the Javascript API and the Maps Static API (which is need to export Google map to format such as PDF or Excel).  Your key must be valid for both.  I have just recently run into same problem with exporting the map.  I have provided my API key to the call to the Javascript API so my map displays in browser fine but export fails.  I do not know where in Jasper code the call to the Maps Static API is.  I have tried putting key in the jrxml file but was unsuccessful. 

 

Have you solved your problem as of yet?  If so, I would love to know solution.

Link to comment
Share on other sites

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...