kashoory Posted January 21, 2018 Share Posted January 21, 2018 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 More sharing options...
ktalarico Posted November 21, 2018 Share Posted November 21, 2018 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 More sharing options...
ktalarico Posted November 21, 2018 Share Posted November 21, 2018 SOLUTION: provide API key in /WEB-INF/classes/jasperreports.properties as followsnet.sf.jasperreports.components.map.key=YOUR_API_KEY Link to comment Share on other sites More sharing options...
ktalarico Posted November 21, 2018 Share Posted November 21, 2018 provide API key in /WEB-INF/classes/jasperreports.properties as followsnet.sf.jasperreports.components.map.key=YOUR_API_KEY Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now