motiejunas.tadas Posted October 25, 2016 Share Posted October 25, 2016 Hello,Everything works smooth, when I'm not using threads in application, while calling jasper API to generate reports. But as I saw, if I will use java thread pools, I could generate reports much faster. Only one problem. When I use thread pools, some reports are generated wrong - without parameters filled. ...ExecutorService executor = Executors.newFixedThreadPool(5);for(int i = 0; i < 1000; i++){ Runnable runnable = new Generator(parameters, "target/resources/Invoice.jasper", "Invoice", i); executor.execute(runnable);}...public class Generator implements Runnable {...@Overridepublic void run() { try { JasperPrint jp = JasperFillManager.fillReport(sourceFileName, params, new JREmptyDataSource()); JasperExportManager.exportReportToPdfFile(jp, "./target/resources/" + printFileName + "-" + counter + ".pdf");...[/code]I know, that it can be related with subreprot filling, because these jasper API generating methods already working in multi-threading.Maybe anyone can comment on that? Is it possible to ganerate a lot of reports while using executor pool?Thanks,TM Link to comment Share on other sites More sharing options...
lucianc Posted November 2, 2016 Share Posted November 2, 2016 Looking at your code, it might be that you use the same parameters map object for all the reports. That would be a problem, you need to create a fresh map for each fill process.Regards,Lucian 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